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

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

  • 相关阅读:
    电脑性能提升三
    电脑实用小技巧
    自定义windows开机声音
    电脑性能提升一
    rpm和yum软件管理
    Linux网络技术管理及进程管理
    RAID磁盘阵列及CentOS7系统启动流程
    Linux磁盘管理及LVM讲解
    Linux计划任务及压缩归档
    Android Studio 常用快捷键及常用设置
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9270333.html
Copyright © 2011-2022 走看看