分割R G B图像并使用斑点检测来检测Open cv和C ++中的红色形状

时间:2014-01-08 12:25:10

标签: c++ opencv split computer-vision blob

我正在使用开放式CV和C ++。我需要检测人脸上的一些圆形红色形状的点。我正在使用blob检测但它似乎不起作用。我将图像分成红色,蓝色和绿色,但我认为我没有正确的参数。有人可以帮忙吗? 这是我的代码http://pastebin.com/aGkUz3SG

由于

1 个答案:

答案 0 :(得分:0)

存在多个问题:

您的斑点检测器参数不适合。 .minArea对于您在评论中提供的示例图像来说太大了,因为斑点非常小。 .blobColor是一个问题,因为你的红色并不完美,请看我在底部添加的红色通道的图像。另外,黄色是红色和绿色的组合,也可能具有非常高的红色值。因此,如果您不知道红点的值,.filterByColor=false可能会更好。

这是红色通道,您会看到红色点的红色值低于黄色点,并且值与蓝色点的值大致相同!在第三张图片中,我只能看到一个红点作为人类。在第四张图像上,眼睛旁边的点不是真的可见。总而言之,看起来红色通道不够明显,无法在人体皮肤上找到红点。

红色频道:

enter image description here

我已尝试过HSV色彩空间,但色调值并不是更好,但在饱和度通道中,至少所有点都有点可见:

色相:

enter image description here

饱和度:

enter image description here

值:

enter image description here