OpenCV:找到颜色强度

时间:2016-05-19 08:33:22

标签: python opencv colors image-recognition

我想编写一个程序来查看红色颜色强度是否是主色。如果棕色强度大于阈值。然后程序将打印出“检测到”。

enter image description here

例如,照片中的红色是主色,因此程序应打印出“检测到”!。

我写过这样的事情:

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)

但是,它只会转换图像的颜色,但会给出强度。如何获得图像红色更多的布尔值?

1 个答案:

答案 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