python - 有没有办法使用 OpenCv 和 python 找到图像的特定颜色百分比?
问题描述
我需要知道图像中有多少黑色以确定复选框是否已填充。
这是我找到的代码,但我不适用于任何颜色:
pathImagen = 'fichaje2AnalizarRedimensionado.png'
img= cv2.imread(pathImagen)
brown = [0, 0, 0] # RGB
diff = 20
boundaries = [([brown[2]-diff, brown[1]-diff, brown[0]-diff],
[brown[2]+diff, brown[1]+diff, brown[0]+diff])]
# in order BGR as opencv represents images as numpy arrays in reverse order
for (lower, upper) in boundaries:
lower = np.array(lower, dtype=np.uint8)
upper = np.array(upper, dtype=np.uint8)
mask = cv2.inRange(img, lower, upper)
output = cv2.bitwise_and(img, img, mask=mask)
ratio_brown = cv2.countNonZero(mask)/(img.size/3)
print('brown pixel percentage:', np.round(ratio_brown*100, 2))
cv2.imshow("images", np.hstack([img, output]))
cv2.waitKey(0)
最初此代码用于棕色,但我需要检查黑色,这就是我将其更改为 [0,0,0] 的原因
你知道如何从图像中确定黑色(或白色)的百分比吗?