在OpenCV Python中对点进行warpPerspective逆变换

时间:2019-07-01 11:02:24

标签: python opencv image-processing computer-vision transformation

在我的项目中,我在要裁剪的区域的较大图像中得到了点,然后使用perspectiveTransformwarpPerspective方法对其进行了转换,并检索了一个新图像,将其转换为矩形。在该新图像中,我找到了特定的点(x,y),并希望相对于其角度将其向后转换为原始图像。为此,我使用了相同的warpPerpective和相同的参数,但带有标志WARP_INVERSE_MAP。但是,它返回了一个由零组成的大型数组。

如何对图像(而不是对点)进行逆变换?

这是我使用的代码:

p = (123, 234)
p_array = np.array([[p[0], p[1]]], dtype=np.float32)
matrix = cv2.getPerspectiveTransform(points, output_points)
transformed_points = cv2.warpPerspective(p_array, matrix, table_image_size, cv2.WARP_INVERSE_MAP)

位置:

-从原始图像中裁剪出的4个点,

output_points -必须将裁剪后的图像放置到新图像中的4个点

table_image_size -图片的水平和垂直大小

这些参数进行正向变换,并且在此逆向变换中相同,唯一的区别是,我在warpPerspective方法中插入了 p_array 而不是要裁剪的图像。

1 个答案:

答案 0 :(得分:1)

从warpPerspective documentation

  

dsize:输出图像的大小。

使用transformed_points = cv2.warpPerspective(p_array, matrix, (2,1), cv2.WARP_INVERSE_MAP)