c++ - 在 OpenCV 中合并重叠矩形

标签 c++ opencv rectangles object-detection

我正在使用 OpenCV 3.0。我做了一个汽车检测程序,但一直遇到重叠边界框的问题:

enter image description here

有没有办法按照下图所述合并重叠的边界框? 我使用了 rectangle(frame, Point(x1, y1), Point(x2, y2), Scalar(255,255,255)); 来绘制这些边界框。我从类似的线程中搜索了答案,但我找不到它们有帮助。我想在合并这些边界框后形成一​​个外部边界矩形。

最佳答案

问题

似乎您正在显示您获得的每个轮廓。你不必那样做。按照下面给出的算法和代码。

算法

在这种情况下,您可以做的是遍历检测到的每个轮廓并选择最大的 boundingRect。您不必显示检测到的每个轮廓。

这是您可以使用的代码。

代码

for( int i = 0; i< contours.size(); i++ ) // iterate through each contour. 
      {
       double a=contourArea( contours[i],false);  //  Find the area of contour
       if(a>largest_area){
       largest_area=a;
       largest_contour_index=i;                //Store the index of largest contour
       bounding_rect=boundingRect(contours[i]); // Find the bounding rectangle for biggest contour
       }

      }

问候

关于c++ - 在 OpenCV 中合并重叠矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35958415/

相关文章:

c# - 如何检查对象是矩形还是椭圆

java - Libgdx,如何从坐标创建矩形?

c++ - 如何在 Qt 中制作一个自动滚动的文本框?

c++ 代码折叠与 emacs/cedet

c++ - 为什么 back_insert_iterator/front_insert_iterator/insert_iterator 的 value_type/difference_type/pointer/reference 都是 void?

python - OpenCV Python 特征检测 : how to provide a mask? (SIFT)

opencv - 具有测量的外部参数的立体声整流

opencv - 单应矩阵乘法

cocoa - 在 Cocoa 中绘制一堆(~200)彩色矩形的最佳方法是什么?

c++ - 当程序在两者之间进入休眠状态时,OpenCV 函数 cv::remap() 的执行时间更长