【问题标题】:splitting R G B image and using blob detection to detect red shapes in Open cv and C++拆分 R G B 图像并使用 blob 检测来检测 Open cv 和 C++ 中的红色形状
【发布时间】:2014-01-08 12:25:10
【问题描述】:

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

谢谢

【问题讨论】:

  • 你试过cv::namedWindow("r");cv::imshow("r",r);cv::waitKey(-1);来测试拆分是否正常?在我看来是正确的。在那里,您可能会了解您的“斑点”是否真的存在于红色通道中。
  • 对不起,我无法发布图片。但这是我正在使用的图片的链接。 opticalengineering.spiedigitallibrary.org/data/Journals/OPTICE/…我只使用正面图片,其中包含红色斑点。是的,我能够将照片分成红色。

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


【解决方案1】:

有多个问题:

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

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

红色通道:

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

色调:

饱和度:

值:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-07-15
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 2015-12-24
相关资源
最近更新 更多