检测包含深色背景的图像上的彩色对象

时间:2013-07-12 16:00:52

标签: c++ opencv colors detection contour

我目前正在使用OpenCV尝试检测黑布覆盖的桌子上的物体。相机并不总是看着相同的方向(它是机器人的头部),但只会处理一个图像,因此速度不是必须的。在删除面积太小的轮廓之前,我已经使用cv::Cannycv::findContours使用了我能找到的最合适的参数。这让我接近我想要的结果,但显然检测到一些不在表区域的轮廓。 什么是过滤那些的好方法? 我在考虑三种解决方案(可以结合使用以获得更好的结果):

  • 裁剪图像以保留表格区域,但我想不出一个好的标准(cv::HoughLines?)。
  • 移除未关闭的轮廓。这并不局限于凸轮廓(例如,右边的橙色海豚不是)。检查轮廓中第一个cv::Point和最后一个cv::Point之间的距离(vector<cv::Point>)是否有效?
  • 在每个轮廓之外的几个像素周围研究一个圆圈并检查HSV通道,以确定圆圈的所有像素是否足够深,以便被视为表格的一部分。

如果有人有一种有效的方法来过滤这些轮廓,或只是输入和建议上面的一种过滤方法,那就太棒了。您可以在右下方看到的机器人手也不会成为问题,因为在实际实验过程中它们将不在视野范围内。

Image from the camera to be processed

0 个答案:

没有答案