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
Opencv 二值图像中的目标检测_Opencv_Image Processing_Object Detection_Binary Image - Fatal编程技术网

Opencv 二值图像中的目标检测

Opencv 二值图像中的目标检测,opencv,image-processing,object-detection,binary-image,Opencv,Image Processing,Object Detection,Binary Image,此任务来自于在稳定背景下跟踪对象。到目前为止,我能够移除背景并获得如下二进制掩码: 我需要得到玩具的边界矩形,没有连接到它的绳子(在一些框架上它相当厚)。听起来很简单,但我想不出一个好办法 我试着用我裁剪的玩具的模板进行互相关。它不是很好,而且我需要矩形来改变它的大小。绳子又弄得一团糟 meanShift() 现在我使用了findContours() 我一直在想,一定有更简单有效的解决办法。为了去掉连接的电线,我只需先关上再打开。就像这样,首先重新连接闭合点,然后清除隔离点并切断电源线 然后

此任务来自于在稳定背景下跟踪对象。到目前为止,我能够移除背景并获得如下二进制掩码:

我需要得到玩具的边界矩形,没有连接到它的绳子(在一些框架上它相当厚)。听起来很简单,但我想不出一个好办法

我试着用我裁剪的玩具的模板进行互相关。它不是很好,而且我需要矩形来改变它的大小。绳子又弄得一团糟

meanShift()

现在我使用了
findContours()


我一直在想,一定有更简单有效的解决办法。

为了去掉连接的电线,我只需先关上再打开。就像这样,首先重新连接闭合点,然后清除隔离点并切断电源线


然后,您可以使用相应的MatLab函数计算边界框。

为了移除连接的线缆,我只需先关闭,然后再打开。就像这样,首先重新连接闭合点,然后清除隔离点并切断电源线


然后,您可以使用相应的MatLab函数计算边界框。

根据您的第二张图像,闭合过程可能会移除玩具的大部分(因为玩具身体的边界很薄),因此(如果我们可以假设玩具和绳索的位置始终垂直),您应该首先使用凸面外壳,然后在“图像的每一行”分别寻找较厚的物体(基于玩具各部分的宽度远大于绳索或噪声点的事实)。在每一行中,每一条长度超过阈值的水平线,保留该线,否则将其删除。这样,您将只重建玩具的凸面外壳,现在您可以轻松地在其上拟合矩形。

根据第二张图像,关闭过程可能会删除玩具的大部分(因为玩具身体的边界很薄),所以(如果我们可以假设玩具和绳索的位置总是垂直的),你应该首先使用凸面外壳,然后在“图像的每一行”中分别寻找厚的物体(基于玩具在所有部分的宽度都远远大于绳索或噪声点的事实)。在每一行中,每一条长度超过阈值的水平线,保留该线,否则将其删除。通过这种方式,您可以重建玩具的凸面外壳,现在您可以轻松地在其上拟合矩形。

一旦关闭/打开操作完成,可能会留下一些不需要的斑点。您可以“过滤”“按它们排列轮廓属性(例如:如果某个水滴的周长或曲面不够高,则可以忽略该水滴)。一旦关闭/打开操作完成,可能会留下一些不需要的水滴。您可以按它们的轮廓属性“过滤”它们(例如:如果某个水滴的周长或曲面不够高,则可以忽略该水滴)