【问题标题】:OpenCV Python count pixelsOpenCV Python 计数像素
【发布时间】:2017-08-23 09:44:20
【问题描述】:

我正在处理一个应用 OpenCV 的小项目,但我遇到了一些我不知道如何实现的问题。假设我有一张图片 (1024x768)。在这张图片的中心有一个红色的边界框。

是否可以使用OpenCS 计算红色框内的像素?假设图像尺寸为1024x768

我尝试通过对红色进行阈值处理来使用边界矩形并尝试使用convexhull,但我无法提取红色标记内有多少像素。

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    这很简单。显然内部灰色和外部颜色是不同的。只是对图像进行阈值处理。

    ret,thresh=cv2.threshold(img,133,255,cv2.THRESH_BINARY_INV)
    

    然后使用:

    cv2.countNonZero(your_thresh_img)
    

    这为您提供了白色像素的数量,这是您需要的数量。在您的图像中,它是 183920 像素。

    编辑

    import numpy as np
    import cv2
    
    img=cv2.imread("your_image.png",0)
    
    def nothing(x):
      pass
    
    cv2.namedWindow('image')
    
    cv2.createTrackbar('min','image',0,255,nothing)
    cv2.createTrackbar('max','image',0,255,nothing)
    
    while(1):
    
     a = cv2.getTrackbarPos('min','image')
     b = cv2.getTrackbarPos('max','image')
     ret,thresh=cv2.threshold(img,a,b,cv2.THRESH_BINARY_INV)
     cv2.imshow("output",thresh)
     k = cv2.waitKey(10) & 0xFF
     if k == 27:
        break
    print cv2.countNonZero(thresh)
    cv2.destroyAllWindows()
    

    【讨论】:

    • 编辑并添加了阈值。抱歉,之前我做错了阈值。更新了新值。
    • 嗨 I.Newton :) 谢谢你的回答。我明白了:) ahmmm 另外,如果中心不是纯灰色怎么办?说它是岩石和沙子的照片?还有其他方法可以实现相同的输出吗?
    • 在这种情况下,您需要设置红色边框的阈值,然后执行所需的任何操作,例如 1024*768- 值等。
    • 有很多方法,具体取决于您想要什么以及图像的外观
    • 我将为您可以使用的 Trackbar 编辑和添加代码以设置阈值。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2016-02-13
    • 2014-05-22
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多