Я пытаюсь отобразить процент красного цвета на моем изображении с помощью OpenCV и Python.

Я новичок как в OpenCV, так и в Python, и я пытаюсь рассчитать количество красных пикселей и отобразить его в процентах. Однако он продолжает отображать 0%, хотя на изображении много красного. Может ли кто-нибудь помочь мне?

Это то, что у меня есть до сих пор,

import cv2
import numpy as np

img = cv2.imread('roi.jpg')
size = img.size


RED_MIN = np.array([0,0,128], np.uint8)
RED_MAX = np.array([250, 250, 255], np.uint8)


dstr = cv2.inRange(img, RED_MIN, RED_MAX)
no_red = cv2.countNonZero(dstr)
frac_red = np.divide((int(no_red)),(int(size)))
percent_red = np.multiply((int(frac_red)), 100)
print('Red: ' + str(percent_red) + '%')

person N.Panda    schedule 03.03.2017    source источник


Ответы (1)


Ошибка, по-видимому, в frac_red = np.divide((int(no_red)),(int(size))), так как вы явно конвертируете оба операнда в int перед передачей их в np.divide(), что также вернет int, если оба операнда int, чтобы получить точный десятичный процент, вам нужно передать любой из них или оба они как float:

frac_red = np.divide(float(no_red), int(size))

# Your current Scenario
In [5]: np.divide(3, 8)
Out[5]: 0

# Expected Scenario
In [7]: np.divide(3.0, 8)
Out[7]: 0.375
person ZdaR    schedule 03.03.2017