如何使用open cv确定矩形是否格式正确

时间:2013-11-14 13:40:04

标签: opencv computer-vision

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

这是我目前正在做的检测矩形

 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;
         }
    }

我可以检测到它是否是一个矩形,但我不知道如何检测到这是一个形状不正确的矩形,如下图所示。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

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

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