附图是Opencv 2.4.2的霍夫变换输出
你能告诉我最好的算法来从这些线段中检测出最好的四边形(不总是矩形)吗
即使有些角位于图像边界之外,我仍然需要检测它们
非常感谢
最佳答案
没有时间实际尝试这个,我可以想象这样的事情:
- 遍历所有直线并计算斜率。
- 按斜率对线进行排序
- 如果两条线的斜率大致相似,则它们要么是平行的,要么是同一条线中有一个间隙(例如,左边几乎垂直的线)。要找出哪个,请计算它们将截取 x 或 y 轴的位置。如果他们在同一点截取,他们是同一条线,应该合并为一条线。如果不是,请将它们放在一组(大致)平行线中。
- 将每组平行线与另一组平行线进行比较,并计算它们是否相交(可能在屏幕外)。
- 应用一些依赖于应用程序的标准来挑选最好的。
这个的运行时间在很大程度上取决于检测到的线的数量和平行线组的数量。您可以通过仅考虑最小长度的线、使用线被视为平行的阈值等来改进一点。
关于image-processing - 从一组随机线段中检测四边形形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155323/