我正在使用开放式CV和C ++。我需要检测人脸上的一些圆形红色形状的点。我正在使用blob检测但它似乎不起作用。我将图像分成红色,蓝色和绿色,但我认为我没有正确的参数。有人可以帮忙吗? 这是我的代码http://pastebin.com/aGkUz3SG
由于
答案 0 :(得分:0)
存在多个问题:
您的斑点检测器参数不适合。 .minArea
对于您在评论中提供的示例图像来说太大了,因为斑点非常小。 .blobColor
是一个问题,因为你的红色并不完美,请看我在底部添加的红色通道的图像。另外,黄色是红色和绿色的组合,也可能具有非常高的红色值。因此,如果您不知道红点的值,.filterByColor=false
可能会更好。
这是红色通道,您会看到红色点的红色值低于黄色点,并且值与蓝色点的值大致相同!在第三张图片中,我只能看到一个红点作为人类。在第四张图像上,眼睛旁边的点不是真的可见。总而言之,看起来红色通道不够明显,无法在人体皮肤上找到红点。
红色频道:
我已尝试过HSV色彩空间,但色调值并不是更好,但在饱和度通道中,至少所有点都有点可见:
色相:
饱和度:
值: