【发布时间】:2015-09-09 14:34:02
【问题描述】:
简短的问题是如何使用 OpenCV 将像下面这样的形状转换为矩形?
注意事项:
- 形状轮廓不一定是直线 - 它们可以是 略微弯曲。
- 形状内的内容必须沿着 相应的 x 和 y 轴。
长篇大论:
在一张纸被折叠 2 或 4 次后,我正在尝试纠正图像的扭曲,该图像表示一张带有文本、徽标等的纸,并使其几乎是完美的矩形。
输入图像已经是具有校正透视的黑白格式。所以一切都很好,只是它在扭曲的边缘周围有黑色区域并且文本有点波浪。
我的想法是顺序应该是这样的:
- 查找板材轮廓
- 计算校正矩阵以将形状区域映射到适当的矩形区域
- 使用计算矩阵变换图像
即类似于我们使用Imgproc.findContours 执行透视校正,然后找到纸张角,然后是Imgproc.getPerspectiveTransform 并最终使用Imgproc.warpPerspective 执行校正。
但我找不到适合这种情况的算法。
谁能指出如何在图像处理中实现它?
【问题讨论】:
-
你还没有走上正轨。您正在研究的转换是线性转换,可以类似于我的矩阵 docs.opencv.org/3.1.0/da/d54/… 。对于您的任务,您需要一些高度非线性的东西,因为您将一个任意轮廓映射到另一个。
标签: java android image opencv image-processing