【问题标题】:How to distinguish HSV color of an RGB led in opencv?如何区分opencv中RGB LED的HSV颜色?
【发布时间】:2014-05-29 03:06:31
【问题描述】:

我想制作一个程序,用 LED 跟踪笔的位置,移动鼠标并单击。为此,我使用了带有 c++ 的 rgb led 和 opencv。但是,对于 3 种颜色中的任何一种,我只得到 hsv 87,9,255。如何区分它们?

【问题讨论】:

  • HSV 是另一种呈现颜色的方式。明亮的原色的 H (87) 应该比其他两个值变化更大,但是您似乎在这里遇到了另一个问题...
  • 使用 bgr 色彩空间会更好吗?我用来获取值的代码在这里link to the blog, code in python
  • 如果你只有 3 种颜色,是的,我肯定会坚持使用 RGB 值;您可以简单地获取最高值通道来直接识别颜色,而不是尝试评估颜色是否在某个色调范围内。但是正如我所说,我不确定您的问题出在色彩空间中,甚至与颜色转换有关,但可能更多的是在图像中获取笔的颜色...您在 RGB 颜色空间中获得的值是什么?更有意义吗?

标签: c++ opencv mouse led hsv


【解决方案1】:

如果你在做基于颜色的分割,最好转换hsv颜色空间,因为它不会影响亮度和光线变化,

你可以使用像

这样的颜色范围
    cvtColor(src, hsv, CV_BGR2HSV);
    inRange(hsv,Scalar(0,50,40), Scalar(10,255,255),thr1); //upper red range of hue cylinder
    inRange(hsv,Scalar(165,50,40), Scalar(179,255,255),thr2);// lower red range of hue cylinder
    thr1+=thr2; // Red pixels.

另请参阅颜色 hsv-wheel here,这将帮助您在 hsv 中获得特定颜色的准确颜色范围

【讨论】:

  • 谢谢 ;)。我想我至少找到了解决颜色问题的方法,我只是尝试使用黑色塑料作为背景。现在我得到了每种 LED 颜色的不同值。
  • 关于设置鼠标指针位置和点击,你能帮我写代码吗?我正在使用 linux。
  • @Vitorbnc 在这里查看答案stackoverflow.com/questions/22140880/…
  • 但是这段代码是用来处理鼠标事件的,我想做的就像一个假的鼠标输入。
  • 在这里找到代码!(stackoverflow.com/questions/12109766/…)
猜你喜欢
  • 1970-01-01
  • 2012-11-02
  • 2013-04-10
  • 2015-05-30
  • 2010-09-26
  • 1970-01-01
  • 2017-01-12
相关资源
最近更新 更多