简短的问题是如何使用OpenCV将类似下面的形状转换为矩形?
备注:
长篇故事:
在纸张折叠2到4次后,我试图纠正代表纸张的图像的扭曲,文本,徽标等,使其几乎完全呈矩形。
输入图像已经是黑白格式,并具有更正的透视。所以一切都很好,除了它在扭曲的边缘周围有黑色区域,文字有点波浪。
我的想法是序列应该是这样的:
即。我们使用Imgproc.findContours
进行透视校正,然后找到工作表角落,然后Imgproc.getPerspectiveTransform
,最后使用Imgproc.warpPerspective
进行校正。
但我找不到适合这种情况的算法。
有人能指出如何在图像处理中获得它吗?
答案 0 :(得分:0)
在这种情况下,您正在寻找对该图像进行非线性转换的方法。传统上,您将使用整个纸张的单个转换将其制成矩形。这可以只在角落进行。更复杂的校正(例如镜头畸变),您需要在页面上选取点并断言它们应该共面才能生成转换矩阵。基本上,您需要了解图像中的几何形状才能使其变形。因此,您需要找到的几何是页面的3维表面。
为了找到整齐的纸的高度非线性几何形状,您可以拍摄页面的多个图像并对其进行三角测量。如果要走这条路,请选择Hartley和Zisserman的“多视图几何”副本。