python opencv 灰度图,opencv颜色直方图
图像由不同灰度值的像素组成,图像中的灰度分布是图像的重要特征。图像的灰度直方图描述了图像中的灰度分布。本文将使用Python和OpenCV来绘制灰度直方图,大家可以参考一下。
1.直方图的概念
图像直方图是反映图像像素分布的统计表。其实横坐标代表的是图像像素的类型,可以是灰度,也可以是彩色。纵坐标表示图像中每个颜色值的像素总数或所有像素的百分比。图像是由像素组成的,因为反映像素分布的直方图往往可以作为图像的一个非常重要的特征。
图像灰度直方图:
图像由不同灰度值的像素组成,图像中的灰度分布是图像的重要特征。图像的灰度直方图描述了图像中灰度的分布,可以直观地显示图像中灰度的多少。图像的灰度直方图是灰度级的函数,它描述了图像中具有灰度级的像素数量:横坐标是灰度级,纵坐标是灰度级的频率。
归一化直方图3360
通常纵坐标会归一化到[0,1]范围,即灰度的频率(像素数)除以图像的总像素数。直方图的计算公式如下:
其中rk是像素的灰度级,nk是具有灰度级rk的像素的数量,MN是图像中像素的总数。
密码
将cv2作为cv导入
将numpy作为np导入
从matplotlib导入pyplot作为plt
#%matplotlib内联
def plot_demo(图像):
PLT。HIST(图片。拉威尔(),256,[0,256]) #图片。ravel () # ravel函数是将一个多维数组化简为一维数组,统计每个bin的出现频率,256:bin的个数,[0,256]:取值范围。
Plt.show (histogram) #和OpenCV中所需的直方图不同。
绘制灰度直方图3360
可以调用matplotlib.pyplot库进行绘制,其中hist函数可以直接绘制直方图。
plt.hist(arr,bins=50,normed=1,facecolor=green ,alpha=0.75)
hist的参数有很多,但这是常用的五个,只有第一个是必须的,后四个是可选的。
Arr:需要计算直方图的一维数组。
Bins:直方图的列号,可选,默认为10。
Normed:是否对获取的直方图向量进行归一化。默认值为0。
范围参数表示盒子的下限和上限。即横坐标上显示的范围,超出范围的将被丢弃。
def image_hist(image):
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参数指示传入图像的通道。如果是灰度图像,不言而喻,只有一个通道的值为0,
如果是彩色图像(有3个通道),则值为0、1和2,其中一个对应BGR的每个通道。这个值也用[]传入。
mask参数表示遮罩图像。如果算全图的话,那就是一个都没有。
主要是如果要统计部分图的直方图,就要构造相应的掩膜来计算。
HistSize参数表示灰度级的数量,需要括号,例如[256]
ranges参数指示像素值的范围,通常为[0,256]。此外,如果通道为[0,1],范围为[0,256,0,180],
那么代表0的通道范围是0-256,1的通道范围是0-180。
Hist参数表示计算的直方图。
src=cv . im read( f :/images/Lena . png )
cv.namedWindow(输入图像,cv。WINDOW_AUTOSIZE)
cv.imshow(输入图像,src)
绘图_演示(src)
图像历史(src)
cv.waitKey(0)
cv.destroyAllWindows()
原图
二维直接返回图
RGB直方图
关于Python OpenCV绘制灰度直方图的这篇文章到此为止。关于Python OpenCV灰度直方图的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。