Есть ли способ найти определенный c процент цвета изображения, используя OpenCv с python? - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно знать, сколько черного находится внутри изображения, чтобы определить, заполнен ли флажок или нет.

Это код, который я нашел, но я не работаю для меня для любого цвета:

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]

Знаете ли вы, как определить по изображению процент черного цвета (или белого цвета)?

...