我有一个 equirectangular 图像和几个 2D-3D 对应关系。 我的 2D 点是图像点,即像素坐标和 3D 点(对象点)是球形的(r,theta,phi)
我的 equirectangular 图像形状是 (512, 1024)。
我获得了以下相机矩阵,该矩阵将球面点映射到 equirectangular 图像点 (x,y):
f_x, f_y = 512/PI, 512/PI
c_x, c_y = 512, 0
camera_matrix = np.array([[f_x, 0, c_x], [0, f_y, c_y], [0, 0, 1]])
从 (x, y) 点到球坐标的映射为:
phi = PI*(x/512 - 1)
theta = PI*y/512
要点是 -
object_points = np.array([[ 7.00083208, 1.37260601, 0.33747577],
[17.83397865, 1.94631482, 1.79874587],
[16.80799294, 1.97638085, 1.88066045],
[17.1035881 , 1.964109 , 1.93312259],
[13.0116663 , 2.10247407, -3.01273827],
[ 3.19957471, 1.10569335, -2.28501778]])
image_points = np.array([[359., 391.],
[399., 561.],
[337., 297.],
[513., 301.],
[345., 465.],
[453., 469.]])
我应该如何在这里使用 solvePnP ( cv2.solvePnP
) 函数?