#python #opencv #robotics #pose-estimation #opencv-solvepnp
Вопрос:
У меня есть равноугольное изображение и несколько 2D-3D соответствий. мои 2D-точки являются точками изображения, т. е. координатами пикселей, а 3D-точки (точки объектов) являются сферическими (r, тета, phi)
моя равноугольная форма изображения (512, 1024).
Я получил следующую матрицу камеры, которая отображает сферическую точку в точку равноугольного изображения (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
) здесь?