如何在OpenCV中检测单个图像的透视失真?

如何在OpenCV中检测单个图像的透视失真?,opencv,detect,perspective,distortion,warp,Opencv,Detect,Perspective,Distortion,Warp,我正在制作一个程序,从图像文件中识别水平/垂直直线,并为其他目的创建一组直线数据 然而,我遇到了一个问题,当我从对角线方向(或向上/向下)拍照时,这张照片不应该有水平/垂直直线,所以我不能使用这张照片 因此,我必须制定图像预处理方法来反转透视扭曲。为此,我必须首先找到图像的当前投影值。 不幸的是,我找不到一种使用OpenCV的方法,除非我在拍照前添加预先计算的相机矩阵进度 我假设输入图像中的大多数线条应该是水平/垂直直线。有什么方法可以解决我在OpenCV中遇到的问题吗 例如: 透视性扭曲。我想

我正在制作一个程序,从图像文件中识别水平/垂直直线,并为其他目的创建一组直线数据

然而,我遇到了一个问题,当我从对角线方向(或向上/向下)拍照时,这张照片不应该有水平/垂直直线,所以我不能使用这张照片

因此,我必须制定图像预处理方法来反转透视扭曲。为此,我必须首先找到图像的当前投影值。 不幸的是,我找不到一种使用OpenCV的方法,除非我在拍照前添加预先计算的相机矩阵进度

我假设输入图像中的大多数线条应该是水平/垂直直线。有什么方法可以解决我在OpenCV中遇到的问题吗

例如:


透视性扭曲。我想让它像:

你能添加一个样本图像吗?我没有足够的声誉来添加图像。请检查链接。好的。。。如果您知道连接的相同颜色的线构成一个矩形,透视不失真非常简单,可以达到一个比例因子(每个维度的不同未知比例因子):只需将扭曲的矩形点扭曲到任何与轴对齐的矩形,并对整个图像使用相同的单应性。应该可以很容易地按两个方向将线聚类。你可以从中计算出2个消失点。但是我不知道这是否足以校准相机的目标平面……如果你可以手动选择四个点(在失真图像中)在未失真图像中形成一个矩形,如果你可以提供目标坐标,那么使用
getperspectivetransform
(请参阅)。但是,如果要处理一大组图像,手动选择将花费太多时间。。。