我目前正在尝试确定矩形是否形成良好,例如是否有完美的角和直线。
这是我目前正在做的检测矩形
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;
}
}
我可以检测到它是否是一个矩形,但我不知道如何检测到这是一个形状不正确的矩形,如下图所示。
答案 0 :(得分:1)
如果测试图像与您在此处发布的图像相似,则可以尝试使用Hough变换,首先检测线条并检查线条是否平行。 试着看看如何在OpenCV here上使用 OpenCV Hough Transform实现。
然而,我需要更多信息来更好地澄清答案。 我还检查了有关此问题的其他一些线程,您可以查看以下内容: