Opencv_Python_9_图像直方图(histogram)

方法一:使用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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值