OpenCV Android绿色检测

时间:2015-07-23 14:36:21

标签: android opencv colors rgba hsv

目前我正在创建一个用户将检测绿色的应用。我用这张照片进行测试: enter image description here

我的问题是我无法检测到任何绿色像素。在我使用蓝色之前,一切都很好。虽然我尝试了RGB的不同组合,但现在无法检测到任何内容。我想知道绿色或我的检测范围是否存在问题,所以我使用(0, 255, 0)在油漆区制作了一个图像并且它有效。为什么它不能看到这个圈子呢?我使用此代码进行检测:

Core.inRange(hsv_image, new Scalar([I change this value]), new Scalar(60, 255, 255), ultimate_blue);

可能是我设置了错误的范围,但我使用Photoshop获取绿色像素之一的颜色并将其RGB值转换为HSV。然而它并没有奏效。它甚至无法检测到我采样过的像素。怎么了?提前谢谢。

使用Miki的回答:

enter image description here

1 个答案:

答案 0 :(得分:19)

绿色是HSV空间H = 120,它在[0,360]范围内。

OpenCV将H值减半以适应范围[0,255],因此H值而不是在[0,360]范围内,在[0,180]范围内。 S和V仍然在[0,255]范围内。

因此,绿色的H值为60 = 120/2。

你的上限和下限应该是:

// sensitivity is a int, typically set to 15 - 20 
[60 - sensitivity, 100, 100]
[60 + sensitivity, 255, 255]

<强>更新

由于你的图像很暗,你需要使用V的下限。使用这些值:

sensitivity = 15;
[60 - sensitivity, 100, 50]  // lower bound
[60 + sensitivity, 255, 255] // upper bound

结果掩码如下:

enter image description here

您可以参考this answer了解详情。