1

我目前正在尝试确定矩形是否形成良好,例如具有完美的角和直线。

这就是我现在正在做的检测矩形

 Mat image;
 image = imread(argv[1], CV_LOAD_IMAGE_COLOR); 
 cvtColor( image,image1, CV_BGR2GRAY );
 Canny( image1, canny_output,130, 200 );
 vector<Point> approx; 
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;

findContours(canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE, Point(0,0) );
     for (unsigned int i=0; i<contours.size(); i++){
           if((approx.size() == 4)){
                 cout<<"It is a rectangle"<<endl;
         }
    }

我可以检测它是否是一个矩形,但我不确定如何检测它是否是一个格式不正确的矩形,如下图所示。

在此处输入图像描述 在此处输入图像描述

4

1 回答 1

1

如果测试图像与您在此处发布的图像一样,您可以尝试使用霍夫变换,首先检测线条并检查线条是否平行。尝试在此处查看如何在 OpenCV上使用OpenCV Hough Transform 实现

但是,我需要更多信息来更好地澄清答案。我还检查了有关此问题的其他一些线程,您可以检查以下内容:

于 2013-11-15T09:07:40.663 回答