• OpenCVPython系列之2D直方图


    在之前的教程中,我们介绍了OpenCV的一维直方图,之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值,我们通常输入灰度图像。 但是在二维直方图中,我们要考虑两个特征。通常,它用于查找颜色直方图,其中两个特征是每个像素的色相和饱和度值。

    它非常简单,并且使用相同的函数 cv.calcHist ()进行计算。 对于彩色直方图,我们需要将图像从BGR转换为HSV。(请记住,对于一维直方图,我们从BGR转换为灰度)。对于二维直方图,其参数将进行如下修改:

    channel = [0,1] , 因为我们需要同时处理H和S平面。

    bins = [180,256] 对于H平面为180,对于S平面为256。

    range = [0,180,0,256] 色相值介于0和180之间,饱和度介于0和256之间。

    虽然我们在上一个教程中简述了彩色图像的直方图均值化,但是并未进行详述,其本质属于二维直方图,但同样的,它也可以进行均值化。

    我们来看代码:

    def twohist(img):
        hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
        hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
        cv2.imshow("img",img)
        cv2.imshow("res",hist)

    image.png

    image.png]

    不仅仅是OpenCV可以绘制二维直方图,我么能用Numpy仍然可以完成,Numpy还为此提供了一个特定的函数:np.histogram2d()(记住,对于一维直方图我们使用了np.histogram())。

    来看代码:

    import numpy as np
    import cv2 as cv
    from matplotlib import pyplot as plt
    img = cv.imread(cat.jpg')
    hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)
    hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])

    我们刚刚使用了OpenCV进行绘制二维直方图,我们得到的结果是尺寸为 80x256 的二维数组。因此,可以使用 cv.imshow ()函数像平常一样显示它们,它将是一幅灰度图像。

    现在我们将使用Matplotlib进行绘图,matplotlib.pyplot.imshow()函数可以绘制具有不同颜色图的2D直方图,它使我们对不同的像素密度有了更好的了解。

    我们来看代码:

    def plthist(img):
        hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
        hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
        plt.imshow(hist, interpolation='nearest')
        plt.show()

    我们仍然使用刚刚那副猫咪的图像,来看结果:

    image.png

    image.png

    在直方图中,我们可以在H = 0和S = 40附近看到一些较高的值。它对应于猫咪的黑色。同样,在H = 50和S = 20附近可以看到另一个峰值。它对应于猫咪的黄色。

    本次教程我们讨论的就是这些,相比较而言,并不复杂,但是相当有用,至于具体的用途,我们将在后续介绍,现在还为时过早。

  • 相关阅读:
    Yii2 使用 Beanstalk 队列系统
    Yii2 注册表单验证规则 手机注册时候使用短信验证码
    Yii2 高级模板 多域名管理问题
    PHP生成缩略图,控制图片质量,支持.png .jpg .gif
    yii2-lock-form 也许这就是你想要的,阻止表单多次提交
    PHP日期与时间戳转换
    PHP/Yii2操作Cookie,常见问题以及注意事项
    对称加密,API加密
    yii2弹出层
    两种不同的Context
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/15656889.html
Copyright © 2020-2023  润新知