【发布时间】:2011-12-09 16:43:43
【问题描述】:
场景是这样的:我有一张纸的图片,我想做一些 OCR。所以把下面的图片作为我的输入示例:
在成功检测到与纸张对应的区域后,我留下了一个由 4 个坐标组成的 vector<Point>,定义了它在图像中的位置。请注意,由于相机的距离和拍摄照片时的角度,这些坐标可能不会对应于完美的矩形。出于查看目的,我连接了子图像中的点,以便您了解我的意思:
在这种情况下,点是: [1215, 43] , [52, 67] , [56, 869] 和 [1216, 884]
此时,我需要调整这些点,使它们水平对齐。我的意思是什么?如果您注意到上面子图像的区域,它有点旋转:图像右侧的点比另一侧的点位置稍高。
换句话说,我们有图像 A,它被故意夸大以看起来比现实更扭曲/旋转,然后是图像 B - 这就是我想作为这个过程的最终结果:
A)B)
我不确定哪些技术可以用来实现这种转变。该应用程序还需要自动检测需要进行多少旋转,因为我无法控制图像采集过程。
目的是有一个新的Mat 与规范化 子图像。我现在并不担心可能的图像失真,我只是在寻找一种方法来确定需要对子图像进行多少旋转以及如何应用它并获得更多矩形区域。
【问题讨论】:
标签: c++ c opencv image-processing rotation