c++ - 如何找到 warpPerspective 的变换矩阵以将旋转后的图像带到归一化位置?

标签 c++ opencv image-processing template-matching

我需要处理一些从扫描仪获得的信息。问题是我偶尔会旋转图像。我决定在照片上添加一些特殊对象,以便能够使用技术 Features2D + Homography 来找到该对象。我认为在找到特殊对象后我可以将图像旋转回其原始位置(使用 warpPerspective?)。这是一个例子:
旋转后的图像,我知道黑框下面有一些文字,我需要那个区域来实现 OCR 功能: enter image description here

我在找到黑盒后卡住了。我想我会使用 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/

相关文章:

c++ - 点光照错误 Directx 11

android - 需要在 android 中使用相机捕获矩形 View 内的图像

opencv - 为什么 Mat 类型不需要是指针?

c# image filter parallel.for 需要更长的时间

c++ - 如何旋转图像中的特定部分?

java - Android JNI - 从 C++ 调用 Android UI 线程上的函数

c++ - CDT代码分析器如何引入nullptr?

c++ - 知道函数内部参数中基指针派生类的类型吗?

c# - 在 Emgu Cv 中写入视频时出错

image-processing - 使用卷积神经网络识别图像中的多个对象