我想改变这个足球场的形象
以鸟瞰视图,最初try 仅使用warpPerspective
(python中的OpenCV),但结果是
这表明原始图像中存在失真.
我已经研究了消除图像失真的方法,但据我目前所知,我需要进行相机校准.这里的问题是,我没有任何关于用于记录足球场画面的相机属性的信息(这是唯一一个使相机校准困难的Angular ).
我正在寻找关于如何在不知道相机属性的情况下,不失真图像以获得完美的鸟瞰视野的任何建议.我也非常感谢您提供我可以学习的任何后续步骤或资源.
这是迄今为止我在Python中使用的代码:
import cv2 as cv
import numpy as np
img = cv.imread("/Users/laulpee/Desktop/python/Screen Shot 2022-05-20 at 2.44.15 AM.png")
print(img.shape)
# Field Size 60' x 90'
h = 900
w = 1200
# 4 Points on Original Image
pt1 = np.float32([[2125,382],[1441,502],[3236,773],[3252,530]])
# 4 Corresponding Points of Desired Bird Eye View Image
pt2 = np.float32([[0,0],[0,h],[w,h],[w,0]])
matrix = cv.getPerspectiveTransform(pt1, pt2)
output = cv.warpPerspective(img,matrix,(w,h))
for i in range(0,4):
cv.circle(img,(int(pt1[i][0]),int(pt1[i][1])),5,(0,0,255),cv.FILLED)
window1 = cv.namedWindow("w1")
cv.imshow(window1,img)
cv.waitKey(0)
cv.destroyWindow(window1)
window2 = cv.namedWindow("w2")
cv.imshow(window2,output)
cv.waitKey(0)
cv.destroyWindow(window2)