Это один из вариантов. Так как белый цвет в BGR равен (255, 255, 255)
, id предлагает вам преобразовать изображение в логическое значение true, где каждый (независимый) канал равен 255
:
b, g, r = cv2.split(img)
wb = b == 255
wg = g == 255
wr = r == 255
Значение всех каналов должно быть 255
(True
) для того же пикселя, поэтому используйте np.bitwise_and :
white_pixels_if_true = np.bitwise_and(wb, np.bitwise_and(wg, wr))
Наконец, получите количество истинного значения и размер изображения и найдите процент белых пикселей:
img_size = r.size
white_pixels_count = np.sum(white_pixels_if_true)
white_area_ratio = white_pixels_count / img_size
Учитывая площадь изображения, вы можете умножить площадь на white_area_ratio
, чтобы получить белую область.