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:在多个图像时,是否累计计算像素值得个数

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

  • 相关阅读:
    python打包成exe可执行文件(pyinstaller)
    pandas入门:pandas的数据结构介绍
    NumPy基础:范例-随机漫步
    NumPy基础:随机数生成
    NumPy基础:线性代数
    NOIP2018总结
    luogu P2327 [SCOI2005]扫雷
    luogu P3197 [HNOI2008]越狱
    luogu P1578 奶牛浴场
    luogu P1003 铺地毯
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9270333.html
Copyright © 2011-2022 走看看