我怎样才能找到最大的四边形

Rou*_*her 5 c++ opencv image-processing contour feature-detection

在这种情况下,如何找到最大的四边形?

在附图中,您可以看到我所拥有的(在左侧)和我想要的内容(在rigth中). 在此输入图像描述

此代码不起作用,因为最大的矩形有十字而不是角.

int GameController::GetIndexOfExternalContour(vector<vector<Point>> contours)
{
    int largest_area=0;
int largest_contour_index=0;

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
    }
}
Run Code Online (Sandbox Code Playgroud)

fee*_*ree 0

我有一个想法:

1)进行Hough变换,这样所有的直线都会落入变换域中的一个点。我注意到这条线并不是很直,所以请记住对霍夫变换图像执行平均滤波,或者在执行霍夫变换时降低采样率。

2)分析Hough变换图像,尝试分别在近水平方向和近垂直方向寻找局部极大点。如果进展顺利,两个方向上都应该有 5 个局部最大值点。

3)在每个方向上的这些局部极大点中,选择在图像域中变换为线时距离最大的两个点。

4) 使用选定的线,计算线的交点。它们对应于最大矩形的角。