Позволяет ли Opencv вычислять перспективное преобразование 3x4, используя 6 точек? - PullRequest
1 голос
/ 08 июня 2019

Я хочу вычислить матричное преобразование 3x4 в однородных координатах, которое преобразует точки трехмерного мира в точки двумерного изображения. Моя проблема заключается в том, что в документации и руководствах функции getPerspectiveTransformation матрицы по умолчанию либо 3x3 для перспективы, либо 2x3 для аффинных преобразований.

Есть ли встроенная функция для вычисления матрицы 3х4?

Я прочитал учебники, некоторые книги по компьютерному зрению и знаю, что матрица, которая преобразует 3d в 2d, - это 3x4. Чтобы получить эту матрицу, необходимо ввести 6 баллов, и в примерах, которые я нашел для opencv, они используют 4, так что я думаю, что это преобразование 2d в 2d, а не то, что мне нужно.

cv2.getPerspectiveTransform cv2.getAffineTransform

Я использовал эти функции, но они не работали, я использовал функцию cv2.circle, чтобы нарисовать прямую линию на изображении, и я получил изогнутые линии. Очевидно, я не использовал правильное матричное преобразование.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Ну, если хотите, вы можете попытаться создать свой собственный код, который это делает.Вот мой «теоретический» подход к этой проблеме, если она вам поможет.enter image description here enter image description here enter image description here

0 голосов
/ 08 июня 2019

Да, конечно, есть.Просто найдите функцию computeThreeByFourMatrix () в документации библиотеки OpenCV.Это все там

...