微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查找图像中的变形矩形OpenCV

如何解决查找图像中的变形矩形OpenCV

| 我正在寻找正确的算法集来解决此图像处理问题: 我有一个变形的二进制图像,其中包含一个变形的矩形 我需要找到这个矩形的4个角点的近似值 我可以使用OpenCV计算轮廓,但是随着图像变形,它通常会包含4个以上的角点。 是否有一个很好的近似算法(最好使用OpenCV操作)来使用二进制图像或轮廓描述来找到矩形角点? 图像如下所示: 谢谢! 丹尼斯     

解决方法

        使用cvApproxPoly函数消除轮廓的节点数量,然后滤除那些节点过多或角度与90度相差很大的轮廓。另请参阅类似答案     ,        答案略有不同,请参见 http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html     ,        查看opencv函数ApproxPoly。它从轮廓近似多边形。     ,        尝试哈里斯角落探测器。 OpenCV软件包中有一个示例。您需要为图像使用参数。 并查看其他OpenCV算法:http://www.comp.leeds.ac.uk/vision/opencv/opencvref_cv.html#cv_imgproc_features     ,        我会尝试广义霍夫变换,它有点慢,但可以很好地处理变形/不完整的形状。 http://en.wikipedia.org/wiki/Hough_transform     ,         即使您从某些缺陷入手,这也将起作用,即您的aboutPolly调用返回五角/六边形。它将所有轮廓(例如transContours)缩小为一个四边形,或者您想要的任何多边形。
vector<Point> cardPoly;// Quad storage
int PolyLines = 0;//PolyPoly counter ;)
double simplicity = 0.5;//Increment of adjustment,lower numbers may be more precise vs. high numbers being faster to cycle.
while(PolyLines != 4)//Adjust this 
{
    approxPolyDP(transContours,Poly,simplicity,true);
    PolyLines = Poly.size();
    simplicity += 0.5;
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。