zoukankan      html  css  js  c++  java
  • 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:在多个图像时,是否累计计算像素值得个数

    根据直方图的波峰可以判断图像的主要特征,可以用于图像的分割,根据各个波峰

  • 相关阅读:
    P2805 [NOI2009]植物大战僵尸
    P3833 [SHOI2012]魔法树
    LOJ121 「离线可过」动态图连通性
    POJ2774 Long Long Message
    POJ2406 Power Strings
    SPOJ 694 DISUBSTR
    POJ3261 Milk Patterns
    HIHOcoder 1466 后缀自动机六·重复旋律9
    P2504 [HAOI2006]聪明的猴子
    P3804 【模板】后缀自动机
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9270333.html
Copyright © 2011-2022 走看看