我想编写一个程序来查看红色颜色强度是否是主色。如果棕色强度大于阈值。然后程序将打印出“检测到”。
例如,照片中的红色是主色,因此程序应打印出“检测到”!。
我写过这样的事情:
lower_red = np.array([110, 50, 50], dtype=np.uint8)
upper_red = np.array([130,255,255], dtype=np.uint8)
mask = cv2.inRange(hsv, lower_red, upper_red)
res = cv2.bitwise_and(frame,frame, mask= mask)
但是,它只会转换图像的颜色,但会给出强度。如何获得图像红色更多的布尔值?
答案 0 :(得分:1)
您应该将图像转换为HSV色彩空间。在该空间中分离红色很简单:红色在[0-10]和[160-180]附近有Hue。 然后你可以检查红色的比例是否大于阈值。
(pseudocode)
fun isRedColorGreaterThanThreshold(image, threshold)
imageHSV = convertToHSV(image)
channels = split(imageHSV)
Hue = channels[0]
ratio = countNonZero((0 < Hue < 10) or (160 < Hue < 180)) / image.total()
return ratio > threshold