当使用opencv2和Python 2.7时,我在特定图像上调用函数warpPerspective,它为我提供了所需的图像的自上而下的俯视图。当我使用相同的透视矩阵和参数并且仅更改图像时,新图像不会以相同的方式变形。如果透视矩阵相同,则Perspective不应该以相同的方式扭曲图像。 任何帮助将不胜感激。
(tl, tr, br, bl) = rect # points I scan in
widthA = np.sqrt(((br[0] - bl[0]) ** 2) + ((br[1] - bl[1]) ** 2))
widthB = np.sqrt(((tr[0] - tl[0]) ** 2) + ((tr[1] - tl[1]) ** 2))
maxWidth = max(int(widthA), int(widthB))
heightA = np.sqrt(((tr[0] - br[0]) ** 2) + ((tr[1] - br[1]) ** 2))
heightB = np.sqrt(((tl[0] - bl[0]) ** 2) + ((tl[1] - bl[1]) ** 2))
maxHeight = max(int(heightA), int(heightB))
dst = np.array([
[0, 0],
[maxWidth - 1, 0],
[maxWidth - 1, maxHeight - 1],
[0, maxHeight - 1]], dtype = "float32")
M = cv2.getPerspectiveTransform(rect, dst)
#I add 2000 to zoom out of the picture
warped = cv2.warpPerspective(image, (maxWidth+2000,maxHeight+2000))
当我在这张图片上运行代码
这就是我想要的
当我重用矩阵时,我在此图像上进入了getPerspectiveTransform 2nd Image
我明白了
我知道透视图应该视而不见,因为透视图矩阵是从原始图像中获取的,但是我认为第二个变形图像应具有与原始变形图像相同的大小。
我将在其他几张图像上重用相同的透视矩阵,以获取鸟瞰图,因此必须使图像的大小相同。