0

我有一个 equirectangular 图像和几个 2D-3D 对应关系。 在此处输入图像描述 我的 2D 点是图像点,即像素坐标和 3D 点(对象点)是球形的(r,theta,phi)

我的 equirectangular 图像形状是 (512, 1024)。

我获得了以下相机矩阵,该矩阵将球面点映射到 eq​​uirectangular 图像点 (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) 函数?

4

0 回答 0