【问题标题】:I'm trying to display the percentage of red color in my image with OpenCV and Python我正在尝试使用 OpenCV 和 Python 显示图像中红色的百分比
【发布时间】:2017-07-23 01:13:17
【问题描述】:

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

【问题讨论】:

    标签: python opencv colors hsv bgr


    【解决方案1】:

    该错误似乎在frac_red = np.divide((int(no_red)),(int(size))) 中,因为您在将两个操作数传递给np.divide() 之前将它们显式转换为int,如果两个操作数都是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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-12
      • 2017-08-27
      • 1970-01-01
      • 2014-02-23
      • 2015-07-31
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多