【问题标题】:Is it possible to count white pixels only in an image using Python?是否可以仅使用 Python 计算图像中的白色像素?
【发布时间】:2021-06-27 15:45:58
【问题描述】:

我一直在尝试使用here 找到的漂亮代码来计算图像中的白色像素。

import cv2
image = cv2.imread("pathtoimg", 0)
count = cv2.countNonZero(image)
print(count)

但是,此代码不仅计算图像中的白色像素,还计算所有非严格黑色的像素,包括非常暗的颜色,例如 rgb(0,0,1)。所以总计数超过了白色像素的计数。

所以,我正在寻找只计算白色像素 rgb(255,255,255) 的代码

有什么想法吗? 非常感谢您的帮助

【问题讨论】:

    标签: python image


    【解决方案1】:

    你可以试试

    np.sum(img == 255)

    或者你可以做的是应用过滤器或反转颜色,所以白色变成黑色,黑色变成白色然后你可以简单地做到这一点

    gray = cv2.cvtColor("pathtoimg", cv2.COLOR_BGR2GRAY)
    pixels = cv2.countNonZero(gray)
    
    

    【讨论】:

      【解决方案2】:

      由于您正在寻找匹配 RGB 值,在这种情况下只有白色,下面应该可以满足您的需求。注意:可以通过调整cv2.inRange 函数中的上下限来扩展此解决方案以计算RGB 值的范围。

      import cv2
      import numpy as np
      
      image = cv2.imread("pathtoimage")
      dst = cv2.inRange(image, np.array([255,255,255], dtype=np.uint8), np.array([255,255,255], dtype=np.uint8))
      count = cv2.countNonZero(dst)
      
      print(count)
      

      【讨论】:

      • 非常感谢。成功了。
      • 最后一个问题。由于您使用的是 inRange,有没有办法计算某个值之间的像素,比如 rbg(250,250,250) 和 rgb(255,255,255)。或者,换句话说,任何比 L=250 更亮的东西。谢谢
      • @VíctorEnrich 是的,绝对是。只需调整函数中的第二个参数并将 [255, 255, 255] 替换为您想要的下限即可。
      猜你喜欢
      • 1970-01-01
      • 2020-07-25
      • 2023-03-26
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 2012-01-15
      相关资源
      最近更新 更多