如何在Java中检测图像中的四边形?

我想用Java检测图像中的四边形.我可以在OpenCV中使用HoughLinesP方法(使用javaCV for opencv java binding)来检测线段.但我无法弄清楚如何检测四边形形状 – 是否有另一种方法可以使用霍夫线?一旦检测到四边形的角落,我希望它返回一个矩形就像这个类一样 – http://www.aforgenet.com/framework/docs/html/7039a71d-a87d-47ef-7907-ad873118e374.htm – openCV中是否有一个等效的库?

解决方法:

您的输入图像如何?如果您使用霍夫变换检测到许多线段,您可以尝试使用RANSAC生成多个四边形形状假设,找到一种评估其适应度并返回最佳假设的方法.

可以这样生成一个假设:

>从检测到的线段集中选择四个随机线段
>通过查找所选线段所在线条的交点来找到四个角
>评估由这四个点定义的四边形形状的适应度

适应度可以是假设的四边形的区域(参见Bretschneider’s formula用于计算凸四边形的面积),四边形边缘与检测到的集合中的其他线段的距离,或者更适合您的应用的东西.

这只是一个想法,我还没有尝试使用这种方法(但我正在计划实现类似的东西).如果您认为这可行,或者为什么不行,请告诉我!

上一篇:【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句


下一篇:c – OpenCV:来自decomposeHomographyMat的奇怪旋转和平移矩阵