我想用Java检测图像中的四边形。我可以在OpenCV中使用HoughLinesP方法(使用javaCV for opencv java binding)来检测线段。但我无法弄清楚如何检测四边形形状 - 是否有另一种方法可以使用霍夫线?此外,一旦检测到四边形的角,我希望它返回一个矩形,就像这个类一样 - http://www.aforgenet.com/framework/docs/html/7039a71d-a87d-47ef-7907-ad873118e374.htm - openCV中是否有一个等效的库?
答案 0 :(得分:4)
您的输入图像如何?如果您使用霍夫变换检测到许多线段,您可以尝试使用RANSAC生成多个四边形形状假设,找到一种评估其适应度并返回最佳假设的方法。
可以这样生成一个假设:
适应性可能是假设四边形的区域(参见Bretschneider's formula计算凸四边形的面积),四边形边缘与检测到的集合中其他线段的距离,或者某种东西更适合您的应用。
这只是一个想法,我还没有尝试过使用这种方法(但我正在计划实现类似的东西)。如果您认为这可行,或者为什么不行,请告诉我! :)
答案 1 :(得分:2)
您的算法可能是这样的
答案 2 :(得分:1)
如果您使用的是OpenCV库,那么您应该尝试使用FindChessboardCorners
函数。还有here's a good tutorial。