Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在包含暗背景的图像上检测彩色对象_C++_Opencv_Colors_Detection_Contour - Fatal编程技术网

C++ 在包含暗背景的图像上检测彩色对象

C++ 在包含暗背景的图像上检测彩色对象,c++,opencv,colors,detection,contour,C++,Opencv,Colors,Detection,Contour,我目前正在使用OpenCV来检测黑布覆盖的桌子上的物体。摄像机不会总是朝着机器人头部的同一方向看,但只会处理一幅图像,所以速度不是必须的。在删除面积过小的轮廓之前,我使用了cv::Canny和cv::findContours,并提供了我能找到的最合适的参数。这使我接近我想要的结果,但一些不在表格区域的轮廓明显被检测到。 什么是过滤这些信息的好方法? 我想到了三种可以结合使用的解决方案,以获得更好的结果: 裁剪图像只是为了保留表格区域,但我想不出一个好的标准cv::HoughLines?。 删除未

我目前正在使用OpenCV来检测黑布覆盖的桌子上的物体。摄像机不会总是朝着机器人头部的同一方向看,但只会处理一幅图像,所以速度不是必须的。在删除面积过小的轮廓之前,我使用了cv::Canny和cv::findContours,并提供了我能找到的最合适的参数。这使我接近我想要的结果,但一些不在表格区域的轮廓明显被检测到。 什么是过滤这些信息的好方法? 我想到了三种可以结合使用的解决方案,以获得更好的结果:

裁剪图像只是为了保留表格区域,但我想不出一个好的标准cv::HoughLines?。 删除未闭合的轮廓。这并不局限于凸面轮廓,例如,右边的橙色海豚不是。检查等高线中的第一个cv::点和最后一个cv::点之间的距离(这是矢量)是否有效? 研究每个轮廓外几个像素的圆,检查HSV通道,以确定圆的所有像素是否都足够暗,可以将其视为表格的一部分。 如果有人有一个有效的方法来过滤这些轮廓,或者只是输入和建议上面的过滤方法之一,那就太好了。另外,你在右下角看到的机器人手也不会成为问题,因为在实际实验中,机器人手将不在视野范围内


如果你能让别人复制你的结果并提供改进,你会得到更好的帮助。我认为这不是一个编程问题,而是一个研究问题。如果不了解您的研究环境,例如光线条件、要检测的对象类型,我们就无法回答这个问题。即使有了这些知识,回答这个问题通常也涉及到图像数据分析。在我看来,它也可以作为编程。我主要是在寻找一些可能使用OpenCV函数来完成这类工作的人。我将在周一发布代码,因为我无法访问相关的计算机。