Python:opencv warpPerspective 既不接受 2 个也不接受 3 个参数

2024-05-09

我发现单应矩阵如下特征匹配+单应性教程 https://docs.opencv.org/3.4.1/d1/de0/tutorial_py_feature_homography.html using

M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC,5.0)

现在我需要扭曲第二个图像(旋转的图像)以匹配第一个图像的关键点,所以我尝试使用warpPerspective直接在img2因为我们已经有了单应矩阵。 (他们在教程中没有使用 warpPersective)

dst = cv2.warpPerspective(img2, M)

它抱怨我错过了第三个参数

TypeError: Required argument 'dsize' (pos 3) not found

公平地说,我检查了什么dsize在里面docs https://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#warpperspective,这似乎是目标图像大小。好吧,如果没有给出,它可以被推断出来,但是 opencv 正在期待它,(grrr ...很好的 opencv,我会给你的)。我又试了一次

dst = cv2.warpPerspective(img2, M, img2.shape)

它抛出

TypeError: function takes exactly 2 arguments (3 given)

等等,我刚才不是用 2 个参数尝试过吗?

怎么了?


尽管这可能是违反直觉的,但出于某种原因,opencv 已经实现了warpPerspective以这种方式运行:

corrected_image = cv2.warpPerspective(img1, M, (img1.shape[1], img1.shape[0]))

还注意到获得的 M 用于将第一张图像映射到第二张图像,这意味着我可以在第一张图像上使用 M 来扭曲它并使其与第二张图像重叠。 (我试图在 img2 上使用它,如问题所示,但它不起作用)

以及原因有趣的例外目前还不知道。 (如果您知道原因,请随时更新此答案)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:opencv warpPerspective 既不接受 2 个也不接受 3 个参数 的相关文章

随机推荐