【发布时间】:2016-03-26 11:31:57
【问题描述】:
我有一张照片,其中有人拿着一张纸。我想检测那张纸的矩形。
我尝试按照 OpenCV 的不同教程和各种 SO 答案和示例代码来检测正方形/矩形,但问题是它们都依赖于某种轮廓。
如果我遵循squares.cpp 示例,我会从轮廓中得到以下结果:
如您所见,手指是轮廓的一部分,因此算法找不到正方形。
我也尝试使用HoughLines() 方法,但得到的结果与上述类似:
我可以可靠地检测到角落:
图片中还有其他边角,但我将找到的总边角限制为 总是找到这张纸的边角。
是否有一些算法可以从图像中的多个角找到一个矩形?我似乎找不到现有的方法。
【问题讨论】:
-
基本上,您需要获取轮廓,将它们提供给
appoxPolyDP(),然后检查生成的approxCurve大小。如果是 4,你有一个四边形,那些是你的角。之后您可能需要重新安排角落的顺序,因为无法保证顺序。如果您需要更多帮助,请告诉我。 -
我试过了,但是手指的轮廓打破了纸张的侧边,然后 appoxPolyDP 没有找到它。
-
那么我不确定。你能遍历轮廓检查 90° 角吗?
-
有趣的想法,但我不确定如何将角相互匹配。
-
photoshop 放手,然后自动化
标签: c++ algorithm opencv computer-vision