我需要处理一些从扫描仪获得的信息。问题是我偶尔会旋转图像。我决定在照片上添加一些特殊对象,以便能够使用技术 Features2D + Homography 来找到该对象。我认为在找到特殊对象后我可以将图像旋转回其原始位置(使用 warpPerspective?)。这是一个例子:
旋转后的图像,我知道黑框下面有一些文字,我需要那个区域来实现 OCR 功能:
我在找到黑盒后卡住了。我想我会使用 warpPerspective 来旋转它,但是如何找出 3x3 变换矩阵?
谢谢。
最佳答案
使用 FindHomography 方法。
为它提供 4 个源点。 对于目标点,您将需要做一些数学计算,因为这 4 个点应该放在目标图像中的什么位置。一个简单、直接的操作是:
(from top-left going clockwise)
A' = (A.x, A.y)
B' = (A.x + length, A.y)
C' = (A.x + length, A.y + width)
D' = (A.x, A.y + width)
使用 FindHomography() 将 (A,B,C,D) 映射到 (A', B', C', D')。
其中宽度和长度是识别矩形的宽度和长度。
关于c++ - 如何找到 warpPerspective 的变换矩阵以将旋转后的图像带到归一化位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655569/