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)
我有一个想法:
1)进行Hough变换,这样所有的直线都会落入变换域中的一个点。我注意到这条线并不是很直,所以请记住对霍夫变换图像执行平均滤波,或者在执行霍夫变换时降低采样率。
2)分析Hough变换图像,尝试分别在近水平方向和近垂直方向寻找局部极大点。如果进展顺利,两个方向上都应该有 5 个局部最大值点。
3)在每个方向上的这些局部极大点中,选择在图像域中变换为线时距离最大的两个点。
4) 使用选定的线,计算线的交点。它们对应于最大矩形的角。