是否可以使用Python只计算图像中的白色像素



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

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

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

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

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

您可以尝试

np.sum(img == 255)

或者你可以做的是应用滤色器或反转颜色,这样白色变成黑色,黑色变成白色,然后你可以简单地使用

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

由于您希望匹配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)

最新更新