我想在 Java 中检测图像中的四边形。我可以使用 OpenCV 中的 HoughLinesP 方法(使用 javaCV 进行 opencv java 绑定)来检测线段。但我不知道如何检测四边形 - 是否有另一种方法或某种使用霍夫线的方法?此外,一旦检测到四边形的角,我希望它像此类一样返回一个矩形 - http://www.aforgenet.com/framework/docs/html/7039a71d-a87d-47ef-7907-ad873118e374.htm - openCV中是否有等效的库?
问问题
5443 次
3 回答
4
您的输入图像如何?如果您使用 Hough 变换检测到大量线段,您可以尝试使用RANSAC生成许多四边形形状假设,找到一种方法来评估它们的适应度并返回最佳假设。
可以这样产生一个假设:
- 从检测到的线段集中选择四个随机线段
- 通过查找所选线段所在的线的交点来找到四个角
- 评价由这四个点定义的四边形的适应度
适合度可能是假设四边形的面积(请参阅用于计算凸四边形面积的Bretschneider 公式)、四边形边缘与检测集中的其他线段的距离,或者更适合您的应用的东西。
这只是一个想法,我还没有尝试过使用这种方法(但我正计划实现类似的东西)。让我知道您是否认为这可行,或者为什么不可行!:)
于 2012-10-27T11:46:59.937 回答
2
你的算法可能是这样的
- 处理图像以找到边缘(Canny 过滤器)
- 应用霍夫变换来查找线
- 检测以 90 度角(近似)相交的线对
于 2012-10-24T11:48:03.153 回答
1
如果您使用 OpenCV 库,那么您绝对应该尝试使用FindChessboardCorners
功能。还有一个很好的教程。
于 2012-10-24T11:46:00.517 回答