在我的项目中,我在要裁剪的区域的较大图像中得到了点,然后使用perspectiveTransform
和warpPerspective
方法对其进行了转换,并检索了一个新图像,将其转换为矩形。在该新图像中,我找到了特定的点(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 而不是要裁剪的图像。
答案 0 :(得分:1)
从warpPerspective documentation:
dsize:输出图像的大小。
使用transformed_points = cv2.warpPerspective(p_array, matrix, (2,1), cv2.WARP_INVERSE_MAP)