详解Python+OpenCV绘制灰度直方图


Posted in Python onMarch 22, 2022

1.直方图的概念

图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。

图像灰度直方图:

一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征。图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率

归一化直方图:

通常会将纵坐标归一化到[0,1]区间内,也就是将灰度级出现的频率(像素个数)除以图像中像素的总数。灰度直方图的计算公式如下:

详解Python+OpenCV绘制灰度直方图

其中,rk是像素的灰度级,nk是具有灰度rk的像素的个数,MN是图像中总的像素个数。

代码

import cv2 as cv
import numpy as np
 
from matplotlib import pyplot as plt
#%matplotlib inline
 
def plot_demo(image):
    plt.hist(image.ravel(), 256, [0, 256]) #image.ravel()#ravel函数功能是将多维数组降为一维数组,统计各个bin的频次,256:bin的个数,[0, 256]:范围
    plt.show("直方图") #和OpenCV中的想要的直方图不同
"""
画灰度图直方图:
绘图都可以调用matplotlib.pyplot库来进行,其中的hist函数可以直接绘制直方图。
plt.hist(arr, bins=50, normed=1, facecolor='green', alpha=0.75)
hist的参数非常多,但常用的就这五个,只有第一个是必须的,后面四个可选
arr: 需要计算直方图的一维数组
bins: 直方图的柱数,可选项,默认为10
normed: 是否将得到的直方图向量归一化。默认为0
range参数表示箱子的下限和上限。即横坐标显示的范围,范围之外的将被舍弃
"""
 
def image_hist(image):
    color = ('blue', 'green', 'red')  #图像三通道
    for i, color in enumerate(color):
        hist = cv.calcHist([image], [i], None, [256], [0, 256]) #绘制各个通道的直方图
        plt.plot(hist, color=color) #定义线的颜色
        plt.xlim([0, 256]) #x轴的范围
    plt.show()
"""
calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) 
images参数表示输入图像,传入时应该用中括号[ ]括起来
channels参数表示传入图像的通道,如果是灰度图像,那就不用说了,只有一个通道,值为0,
如果是彩色图像(有3个通道),那么值为0,1,2,中选择一个,对应着BGR各个通道。这个值也得用[ ]传入。
mask参数表示掩膜图像。如果统计整幅图,那么为None。
主要是如果要统计部分图的直方图,就得构造相应的掩膜来计算。
histSize参数表示灰度级的个数,需要中括号,比如[256]
ranges参数表示像素值的范围,通常[0,256]。此外,假如channels为[0,1],ranges为[0,256,0,180],
则代表0通道范围是0-256,1通道范围0-180。
hist参数表示计算出来的直方图。
"""
 
 
src = cv.imread("F:/images/lena.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
plot_demo(src)
image_hist(src)
cv.waitKey(0)
 
cv.destroyAllWindows()

原图

详解Python+OpenCV绘制灰度直方图

二维直返图

详解Python+OpenCV绘制灰度直方图

RGB直方图

详解Python+OpenCV绘制灰度直方图

到此这篇关于Python+OpenCV绘制灰度直方图详解的文章就介绍到这了,更多相关Python OpenCV灰度直方图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
python实现猜数字小游戏
Mar 24 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
Python利用scapy实现ARP欺骗的方法
Jul 23 Python
python根据多个文件名批量查找文件
Aug 13 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
python tkinter canvas使用实例
Nov 04 Python
python Xpath语法的使用
Nov 26 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Python+OpenCV实现在图像上绘制矩形
Matplotlib绘制条形图的方法你知道吗
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 #Python
python的netCDF4批量处理NC格式文件的操作方法
Python&Matlab实现灰狼优化算法的示例代码
Python学习之时间包使用教程详解
Mar 21 #Python
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
js中的闭包学习心得
2018/02/06 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
思想汇报范文
2013/11/04 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
2014年清明节寄语
2014/04/03 职场文书
高考寄语大全
2014/04/08 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
宣传活动总结范文
2014/07/01 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
电台广播稿范文
2015/08/19 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js