首页 > 解决方案 > 有没有办法使用 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] 的原因

你知道如何从图像中确定黑色(或白色)的百分比吗?

标签: pythonopencvpixelcv2

解决方案


推荐阅读