【发布时间】:2020-11-07 12:52:08
【问题描述】:
我一直试图弄清楚如何通过使用单应性然后扭曲图像来获得场景的鸟瞰图。我试图扭曲的图像在下面链接,选择的点周围有蓝色圆圈。我从类似的帖子中看到了我需要确保正确排序点的建议,并且我尝试了对象点的不同排序,但结果仍然有相同的奇怪错误。
图像点是手动选择的,您可以根据需要在输出中看到地砖接近正方形。
我认为问题出在单应矩阵上,因为当单应矩阵应用于图像的角落时,它们最终会出现在输出中的像素位置。由于所有角点都在图像中,this post 中描述的计算图像角点以获得完整结果的标准方法没有帮助。
用于生成此代码的代码如下。
import cv2
import numpy as np
img = cv2.imread('test4_frame.png')
img_circled = img.copy()
im_pts = np.array([[659, 618], [779, 662], [542, 654], [661, 707]], np.float32)
for pt in im_pts:
cv2.circle(img_circled, (pt[0], pt[1]), 10, 255)
cv2_imshow(img_circled)
obj_pts = np.array([[1500, 1500], [1550, 1500], [1500, 1550], [1550, 1550]], np.float32)
H = cv2.findHomography(im_pts, obj_pts)[0]
out = cv2.warpPerspective(img, H, (4000, 4000))
cv2_imshow(out)
【问题讨论】:
-
好像吃豆子效果,把目标点移到左下角:
obj_pts = np.array([[3500, 3500], [3550, 3500], [3500, 3550], [3550, 3550]], np.float32)
标签: python numpy opencv computer-vision homography