我有一些内容需要使用OpenCV来检测。在将检测应用到内容本身之前,我需要检测透视失真的角度并修复它。也许我可以使用QR-代码是如何实现它的想法--为图像添加几个锚。不会有任何方形的内容,因此源图像看起来可能如下:
这三个广场将是我们的锚。
在使用OpenCV时,据我所知,我应该执行以下操作:
cvtColor函数对图像应用灰度格式。blur或GaussianBlur应用模糊。threshold和Canny。findContours并对结果进行分析,通过检查顶点数或相似值来找出这三个方格。perspectiveTransform和warpPerspective函数对正方形位置进行分析,并对源图像进行相应的变换。问题是,实际上我不知道应该使用哪些参数,步骤5中方法调用的顺序是什么。我对编码和数学还不熟悉,所以我很感谢您的帮助。
发布于 2016-07-25 09:00:27
我假设您的主要问题是如何从三个2D对应找到一个转换,并相应地扭曲图像。
注意,3个点只定义了一个仿射变换,而不是透视图。(如果你的视角很小,例如,当一个物体离相机很远时,仿射变换是非常好的。)
2D仿射矩阵是3x3矩阵,最后一行是[0 0 1]。(对于透视矩阵,零值可能是任意的。)
您可以通过求解一个线性系统来计算仿射变换,如答案https://stackoverflow.com/a/2756165/2079934中所描述的。(解决方案是独一无二的。)
当你有仿射矩阵时,你可以应用warpAffine (而不是warpPerspective)来校正图像。transformations.html#warpaffine
https://stackoverflow.com/questions/38550813
复制相似问题