Как спроецировать 3D-точку из 3D-мира с определенным положением камеры в 2D-изображение?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как спроецировать 3D-точку из 3D-мира с определенным положением камеры в 2D-изображение?

Сообщение Anonymous »

Мне трудно понять, как 3D-точку сцены можно преобразовать в 2D-изображение.
Я создал сцену в 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)
Затем я использую метод openvcs projectPoints для преобразования мировых координат моих кубов в 2D-точки img.
Я не применяю никаких преобразований в форме 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»