【问题标题】:what are recommended color spaces for detecting orange color in open cv?在 open cv 中检测橙色的推荐颜色空间是什么?
【发布时间】:2018-07-09 18:30:53
【问题描述】:

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

【问题讨论】:

  • 欢迎来到 Stack Overflow!请阅读how to ask a good questionwhat have you tried
  • 如果您想跟踪颜色,HSV 可以满足您的需求。如果您希望您的搜索方法对光照变化更具弹性和不变性,您可以事先调用增强方法。对我来说,你的问题不清楚

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


【解决方案1】:

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

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

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


例如:

  1. 检测橙色

我的另一个答案的详细信息: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. 检测绿色/黄色/蓝色

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

  1. 检测两种不同的颜色

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

【讨论】:

    【解决方案2】:

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

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

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

    这将在 RGB 空间中划定一个区域,该区域的形状将告诉您最合适的颜色系统,了解其他颜色系统如何映射到立方体。例如,HLS 可以表示为一个双锥体或双锥体,它的轴沿着立方体的主对角线。

    诚然,这是一项艰巨的任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2021-09-11
      • 2023-03-19
      相关资源
      最近更新 更多