OpenCV 图像直方图

在这里插入图片描述

一:直方图的直接使用
from matplotlib import pyplot as plt
def plot_demo(image):
print(image.ravel())
plt.hist(image.ravel(),256,[0,256]) #ravel将图像3维转一维数组,便于统计频率
# 统计为256个bin,显示0-256bin,意思是全部显示,我们可以设置只显示一部分
plt.show()

src = cv.imread("./1.png")  #读取图片
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)    #创建GUI窗口,形式为自适应
cv.imshow("input image",src)    #通过名字将图像和窗口联系
image_hist(src)
cv.waitKey(0)   #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows()  #销毁所有窗口

在这里插入图片描述

二:联系OpenCV使用直方图

def image_hist(image):
    color = ("blue","green","red")
    for i,color in enumerate(color):
        hist = cv.calcHist([image],[i],None,[256],[0,256])
        plt.plot(hist,color=color)  #传入直方图数据,设置显示颜色
        plt.xlim([0,256])   #设定图标的上下限,默认是全选,可不用设置
    plt.show()

1.def calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None): # real signature unknown; restored from doc

images:输入图像
channels:需要统计直方图的第几通道
mask:掩膜,,计算掩膜内的直方图  ...Mat()
histSize:指的是直方图分成多少个区间,就是 bin的个数
ranges: 统计像素值得区间
hist:输出的直方图数组
accumulate=false:在多个图像时,是否累计计算像素值得个数

在这里插入图片描述

根据直方图的波峰可以判断图像的主要特征,可以用于图像的分割,根据各个波峰
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值