生活就像大海,我就像一条咸鱼,在浩瀚的海洋中边浪边学,这是opencv笔记系列中的「彩色图像直方图」。更多可参观[浪学]公众号~
颜色直方图是在许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例。
世间万图,皆有直方图。如何使用opencv来显示彩色图像直方图呢?这一篇文章以很咸鱼的方式把它们记录下来。
原图还是那一个它:
编写一个函数,根据图像得到各个颜色通道的直方图代码
def ImageHist(image, type):
color = (255,255,255)
windowName = 'Gray'
if type==31:
color = (255,0,0)
windowName = 'B Hist'
elif type==32:
color = (0,255,0)
windowName = 'G Hist'
elif type==33:
color = (0,0,255)
windowName = 'R Hist'
#
hist = cv2.calcHist([image],[0],None,[256],[0.0,255.0])
minV,maxV,minL,maxL = cv2.minMaxLoc(hist)
histImg = np.zeros([256,256,3],np.uint8)
for h in range(256):
intenNormal = int(hist[h]*256/maxV)
cv2.line(histImg,(h,256),(h,256-intenNormal),color)
cv2.imshow(windowName, histImg)
return histImg
复制代码
读取图像显示直方图
img = cv2.imread('image.png',1)
channels = cv2.split(img) # B G R
for i in range(3):
ImageHist(channels[i],31+i)
cv2.waitKey(0)
复制代码
输出直方图如下
更多欢迎来我的公众号一起学习