在open cv中检测橙色的推荐色彩空间是什么?

时间:2018-01-30 19:05:18

标签: python opencv image-processing colors color-space

我需要一个合适的色彩空间来检测与红色和黄色非常相似的颜色之上的橙色。我已经尝试了一些颜色空间:RGB HSV& YUV但是想要检测的物体,改变它的位置,这意味着环境光随着时间的推移而变化。这是我的主要问题。

2 个答案:

答案 0 :(得分:3)

HSV是用于颜色检测的良好色彩空间。 这是一个hsv色彩图供参考:

x轴表示[0,180]中的Hue,y轴1表示[0,255]中的饱和度,y轴2表示S = 255,而保持V = 255。

要查找颜色,通常只需查找H和S的范围,并将v设置为范围(20,255)。

例如:

  
      
  1. 检测橙色
  2.   

我的另一个答案的详细信息:Choosing the correct upper and lower HSV boundaries for color detection with`cv::inRange` (OpenCV)

要查找橙色,我们会查找地图,找到最佳范围:H:[10,25],S:[100,255]和V:[20,255]。所以面具是cv2.inRange(hsv,(10,100,20),(25,255,255))

#!/usr/bin/python3
# 2018.01.21 20:46:41 CST
import cv2

img = cv2.imread("test.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv,(10, 100, 20), (25, 255, 255) )
cv2.imshow("orange", mask);cv2.waitKey();cv2.destroyAllWindows()

结果:

  
      
  1. 检测绿色/黄色/蓝色
  2.   

How to define a threshold value to detect only green colour objects in an image :Opencv

  
      
  1. 检测两种不同的颜色
  2.   

How to detect two different colors using `cv2.inRange` in Python-OpenCV?

答案 1 :(得分:2)

随机选择颜色系统可能不是最佳方法。

更系统化的方法可以是查看下面的颜色直方图,它显示RGB立方体中的所有图像像素。

然后使用从各种图像中提取的橙色样本填充此直方图,以覆盖您正在考虑的所有“橙子”。

这将划分RGB空间中的区域,并且区域的形状将告诉您最合适的颜色系统,了解其他颜色系统如何映射到多维数据集。例如,HLS可以表示为双锥形或双锥形,沿着立方体的主对角线具有斧头。

enter image description here

不可否认,这是一项艰巨的任务。