Я создал сцену в Blender, где моя камера расположена в точке P_cam. (0|0|0) at смотрит между осями x и y (поворот x=90° и z=-45°).
Я создал тестовый куб в pos_c ( 5|5|0).
IMG, которое я вижу, выглядит так:
[img]https:/ /i.sstatic.net/yjHK580w.png[/img]
Теперь я хочу создать тот же img с помощью собственного Python. Поэтому я использую opencv для сопоставления 3D-точек с 2D-точками.
Я создал матрицу камеры (где (0|0) относится к середине изображения)
Код: Выделить всё
cx = width/2 #principal point is our image center
cy = height/2
camera_matrix = np.array([[fx, 0, cx],
[0, fy, cy],
[0, 0, 1]], np.float32)
Я не применяю никаких преобразований в форме tvec.
Но я знаю, что мне нужен вектор вращения, и это для меня сложная часть. Я пытался использовать вектор с теми же значениями, что и в блендере, но это не сработало.
Код: Выделить всё
cam_rot_in_deg = (90, 0, -45)
cam_rot_in_rad = np.radians(cam_rot_in_deg)
rvec = np.array([[cam_rot_in_rad]], np.float32).reshape((3,1))
[img]https://i.sstatic.net /Um80NdwE.png[/img]
Внутри изображения я также визуализировал ось координат, поэтому я вижу, что куб нарисован в правильном положении в мире, но моя перспектива камеры полностью отключен.
Что мне не хватает?
Большое спасибо
Я пробовал множество углов поворота, но ничего не получилось находит желаемое решение.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ion-into-a