getAffineTransform()、getPerspectiveTransform() 和 findHomography() 之间有什么区别

met*_*rsk 8 python opencv

我正在研究转换图像并将其覆盖在另一个图像的轮廓内的方法。

尽我所知,在 Python 中使用 OpenCV 可以通过三种方法来做到这一点:

  1. getAffineTransform()
  2. getPerspectiveTransform()
  3. findHomography()

我通过博客和 SO 帖子找到了三种不同的方法,它们都产生相同的结果,即获取源图像并在目标图像上的不同形状的轮廓上变形/叠加。

这演示了getAffineTransform() /sf/answers/2682646991/

这演示了getPerspectiveTransform() http://uberhip.com/python/image-processing/opencv/2014/10/26/warping-brien/

这演示了findHomography() http://www.learnopencv.com/homography-examples-using-opencv-python-c/#download

我想知道什么是最好的使用方法,为什么要使用一种方法?

小智 1

cv2.findHomography找到两个框架之间的透视变换。cv2.warpPerspective进行两帧之间的图像变换并将其应用于图像。下面是我前几天为作业写的一些代码:

H, masked = cv.findHomography(src, dst, cv.RANSAC, 5.0)

dst = cv.warpPerspective(topright,H,(topleft.shape[1] + topright.shape[1], topleft.shape[0])
Run Code Online (Sandbox Code Playgroud)