Я видел, что многие люди спрашивают подобные вопросы, но я не могу точно соответствовать любой ответ на мою проблемуOpenCV - получить 3D-координаты из 2D
У меня есть маркер и я (х, у) из него в координаты изображения. Я могу получить матрицу преобразования и матрицу вращения. Теперь, как я могу получить координаты (x, y, z)?
(если кто-нибудь может посоветовать мне, как решить мою проблему или перенаправить, я был бы благодарен).
EDIT: Я использую Альвар библиотеку, где я получаю координаты маркера, и я могу получить также создают из него (так что я должен также вращение матрицы 3x3, и перевод матрицы 3x4 или 4x4)
EDIT 2: Я искал больше, и я изучаю метод, который позволяет мне получить матрицы вращения и трансляции. Ну, я предположил, что я могу получить две матрицы, зависит от входных аргументов. Но если я установить в качестве матрицы аргумент 3х3 I будет иметь матрицу вращения только, но если я ставлю там 3x4 или 4x4 матрицы я получаю:
для 4x4
| r0 r1 r2 t1 |
| r3 r4 r5 t2 |
| r6 r7 r8 t3 |
| 0 0 0 1 |для 3x4
| r0 r1 r2 t1 |
| r3 r4 r5 t2 |
| r6 r7 r8 t3 |
умножьте свою точку объекта от solvePnP с составом преобразования вращения и перевода ... – Micka
Хорошо, я понимаю, но понимаю, но я хочу быть уверенным. Я не использую solvePnP. Я получаю (x, y), используя другую библиотеку. У меня есть координаты (x, y) в координатах изображения (в пикселях). Затем я должен умножить эту точку на инвертированную матрицу вращения. И тогда я должен вычесть: R^-1 * t. Если я думаю, что мои исходные координаты должны быть в однородных координатах? Я прав? –
Не превращайте точку, преобразуйте базовые 3D-точки объекта (например, центр тяжести). Может быть, мы говорим о разных вещах, вы можете сказать в своем вопросе, что у вас есть, и какую ротацию и перевод вы имеете в виду и как вы их вычислили? – Micka