怎么绘制直方图
的有关信息介绍如下:给出一张RGB图片,它有三个通道组成,分别是红色通道、绿色通道、蓝色通道。
而根据颜色深度的不同,可以分为0到255个不同的数值。
直方图,就是对某个通道的某一种深度的像素值的像素数目的统计,并画成图像。
这里采用的模块是cv2,默认的通道顺序是BGR:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('b.png')
img*[1,0,0]
获取图片的第一个通道的亮度(也就是像素值)的统计:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('b.png')
h = cv2.calcHist([img],,None,,[0,256])
print(h)
这里,h是一个255*1的列表。
画出这个通道的直方图。
由于这个通道是蓝色通道,所以这里把直方图画成蓝色的:
plt.plot(h,color = 'b')
plt.xlim([0,256])
plt.show()
绿色通道的直方图:
h = cv2.calcHist([img],,None,,[0,256])
plt.plot(h,color = 'g')
plt.xlim([0,256])
plt.show()
红色通道的直方图:
h = cv2.calcHist([img],,None,,[0,256])
plt.plot(h,color = 'r')
plt.xlim([0,256])
plt.show()
把三个通道的直方图合并到一起,就是一个完整的直方图:
c = ('b','g','r')
for i,col in enumerate(c):
h = cv2.calcHist([img],[i],None,,[0,256])
plt.plot(h,color = col)
plt.xlim([0,256])
plt.show()