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中管理countor bounding rect_Opencv - Fatal编程技术网

如何在opencv中管理countor bounding rect

如何在opencv中管理countor bounding rect,opencv,Opencv,我一直在用高斯状态模型测试背景减法。我正在使用opencv 2.1.0. 我可以生成场景前景的二值图像。现在我只想画画 对边界矩形进行计数以高亮显示移动的对象。我使用了cvCountourBoundingRect 以获得矩形覆盖数。我面临的问题是在多个 countour,附近某个矩形重叠。在这里,有人能建议我预防吗 矩形的重叠?在理想情况下,两个矩形不应重叠。相当 应该画一个较大的矩形,覆盖所有两个矩形 任何建议都是非常有用的。在OpenCV中不可能做到这一点。但实际上算法非常简单: 循环浏览所

我一直在用高斯状态模型测试背景减法。我正在使用opencv 2.1.0. 我可以生成场景前景的二值图像。现在我只想画画 对边界矩形进行计数以高亮显示移动的对象。我使用了cvCountourBoundingRect 以获得矩形覆盖数。我面临的问题是在多个 countour,附近某个矩形重叠。在这里,有人能建议我预防吗 矩形的重叠?在理想情况下,两个矩形不应重叠。相当 应该画一个较大的矩形,覆盖所有两个矩形


任何建议都是非常有用的。

在OpenCV中不可能做到这一点。但实际上算法非常简单:

  • 循环浏览所有矩形,检查两个矩形是否相互重叠。本主题将非常有用:
  • 对于每一对重叠的矩形,创建包含这两个矩形的矩形。为此,您应该从第一个矩形中选择一个角点,从第二个矩形中选择另一个角点,这两个角点将为您创建一个矩形。我不认为这是一项艰巨的任务——只是简单的数学

  • 如果你有一个函数,它检查两个矩形是否相交,一个生成一个包含两个或多个给定矩形的矩形,你只需要在列表中找到重叠的矩形并合并它们,否则我误解了你的问题吗?@Dobi你对我的问题很了解。你在这里解释的逻辑是理想逻辑。我正在寻找一种更聪明的方法来达到与你提到的逻辑相同的结果。问题是我需要进行迭代。我想如果有更好的选择。谢谢你,谢谢你的链接。我更喜欢你提到的链接中的e.James的答案。寻找重叠矩形的方法是显而易见的逻辑。这个实现的基本问题是,我需要首先存储所有countour边界rect,然后迭代nxn次以解决矩形重叠问题。我想如果有更好的方法来处理这个问题。我尝试了另一种逻辑,称为双重计数,在这种逻辑中,我拍摄了一张黑色图像,然后用-1边框大小绘制每个轮廓边界矩形,用白色填充,然后再次在该图像上查找轮廓。但不准确。当一个矩形与多个矩形重叠时,复杂性会增加。还需要注意管理此场景。我所想的就是维护两个矩形的集合。比如说,向量inrectcol和向量outrectcol。inRectColl中的每个rect都需要使用您提到的逻辑与outRectColl进行比较。当我们发现矩形与outRectColl中的任何CvRect都不重叠时,outRectColl将增长。需要对重叠的rect进行特殊处理,以决定它是被删除还是在outRectColl中创建新条目。