如何解决查找图像中的变形矩形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 举报,一经查实,本站将立刻删除。