我正在使用 OpenCV 3.0。我做了一个汽车检测程序,但一直遇到重叠边界框的问题:
有没有办法按照下图所述合并重叠的边界框?
我使用了 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/