0

我对 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) + '%')
4

1 回答 1

2

该错误似乎在frac_red = np.divide((int(no_red)),(int(size))),因为您在将两个操作数传递给之前明确地将它们int转换为:np.divide()intintfloat

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
于 2017-03-03T06:17:09.557 回答