【发布时间】:2013-10-27 02:12:21
【问题描述】:
我试图通过组合 getPerspectiveTransform 生成的矩阵将一系列 warpPerspective 组合成一个。如果我使用 cv2.multiply 将它们相乘,则生成的矩阵不起作用。仅两个转换的示例:
src = np.array([[0,0],[0,480],[640,480],[640,0]],np.float32)
dst = np.array([[-97,-718],[230,472],[421,472],[927,-717]],np.float32)
retval = cv2.getPerspectiveTransform(src, dst);
test = cv2.multiply(retval.copy(),retval.copy())
img1 = cv2.warpPerspective(img1,test,(640,480))
img2 = cv2.warpPerspective(img2,retval,(640,480))
img2 = cv2.warpPerspective(img2,retval,(640,480))
为什么 img1 和 img2 不一样? 如何组合透视变换矩阵?
谢谢
【问题讨论】:
-
您不能乘以 3x3 矩阵。您必须将矩阵设为 4x4: [x,x,x,0] [x,x,x,0] [x,x,x,0] [0,0,0,1] 然后乘以然后返回到一个 3x3 矩阵。注意 numpy 选择各个部分的格式,使用 m.item。不要使用 np.resize,它会弄乱矩阵。