简短的问题是如何使用OpenCV将下面这种形状转换为矩形?
注意事项:
1. 形状轮廓不一定是直线,可能略微弯曲。 2. 形状内部的内容必须沿x和y轴进行相应的拉伸。
长篇故事:
我试图在代表具有文本、标志等的纸张的图像上修正扭曲,使其几乎完全成为矩形。输入图像已经处于黑白格式,并进行了透视校正。因此,除了在扭曲的边缘周围有黑色区域和文本稍微波动之外,一切都很好。
我的想法是,序列应该是这样的:
1. 找到纸张轮廓 2. 计算一个校正矩阵,将形状区域映射到正确的矩形区域 3. 使用计算出的矩阵转换图像
即类似于我们使用
但是我找不到这种情况的合适算法。请问有人能指导如何在图像处理中实现这一点吗?
注意事项:
1. 形状轮廓不一定是直线,可能略微弯曲。 2. 形状内部的内容必须沿x和y轴进行相应的拉伸。
长篇故事:
我试图在代表具有文本、标志等的纸张的图像上修正扭曲,使其几乎完全成为矩形。输入图像已经处于黑白格式,并进行了透视校正。因此,除了在扭曲的边缘周围有黑色区域和文本稍微波动之外,一切都很好。
我的想法是,序列应该是这样的:
1. 找到纸张轮廓 2. 计算一个校正矩阵,将形状区域映射到正确的矩形区域 3. 使用计算出的矩阵转换图像
即类似于我们使用
Imgproc.findContours
执行透视校正的方式,然后找到纸张的角落,接着使用Imgproc.getPerspectiveTransform
,最后使用Imgproc.warpPerspective
来执行校正。但是我找不到这种情况的合适算法。请问有人能指导如何在图像处理中实现这一点吗?