您的位置:首页 > 编程语言 > Python开发

Opencv_Python_9_图像直方图(histogram)

2018-03-22 20:30 260 查看
方法一:使用matplotlib包

from matplotlib import pyplot as plt


def plot_demo(image):
plt.hist(image.ravel(), 255)
# plt.hist(image.ravel(), 255, range=[0, 256])
plt.show("直方图")


.ravel():array类型对象的方法,ravel函数将多维数组降为一维,仍返回array数组,元素以列排列。

plt.hist(x, bins=10, range=None, normed=False,

weights=None, cumulative=False, bottom=None,

histtype=u’bar’, align=u’mid’, orientation=u’vertical’,

rwidth=None, log=False, color=None, label=None, stacked=False,

hold=None, **kwargs)

各参数的意义为:

x:这个参数是指定每个bin(箱子)分布的数据,对应x轴

bins:这个参数指定bin(箱子)的个数,也就是总共有几条条状图

range:指定直方图展示的范围,对应x轴

方法二:使用opencv库中画直方图的方法cv.calcHist()

def image_demo(image):
color = ('blue', 'green', 'red')
for i, color in enumerate(color):
hist = cv.calcHist([image], channels=[i], mask=None, histSize=[256], ranges=[0, 255])
plt.plot(hist, color=color)
plt.xlim([0, 255])
# plt.xticks() 设置x轴刻度的表现方式
# plt.xlim() 设置x轴刻度的取值范围
plt.show("图像直方图")


cv.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) # 返回hist

各参数表示的意义为:

images:必须用方括号括起来;

channels:是用于计算直方图的通道;

Mask: 默认None;

histSize:表示这个直方图分成多少份(即多少个直方柱);

ranges:表示直方图中各个像素的值。

print("......hello world ! ......")
src = cv.imread("images/image1.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
plot_demo(src)
image_demo(src)
cv.waitKey(0)

cv.destroyAllWindows()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: