2017-01-02 8 views
0

Я смог преобразовать/деформировать изображения с помощью гомографической матрицы, используя функцию cv2.warpPerspective. Однако, когда я не использую openCV и хочу использовать что-то более низкое - в настоящее время я использую OpenGL для рисования графики, и я хочу применить известную матрицу гомографии к конкретным вершинам, я не могу применить матрицу гомографии как такие как:OpenCV: что делает cv2.warpPerspective?/пытается понять гомологию

Для точки (x, y), я делаю это (x, y, 1). Тогда с моей гомографической матрицей H умножим H * (x, y, 1). H является матрицей 3x3 и (x, y, 1) равна 3x1, поэтому я получаю новую (x ', y', z '), которая равна 3x1. Но этот вопрос не кажется правильным?

Я смог получить правильное преобразованное новое значение, используя метод здесь: https://math.stackexchange.com/questions/296794/finding-the-transform-matrix-from-4-projected-points-with-javascript, но я действительно хочу знать, почему это не работает!

+0

См. [ЭТОТ POST] (http://www.pyimagesearch.com/2014/05/05/building-pokedex-python-opencv-perspective-warping-step-5-6/) для получения дополнительной информации и связанных с ней ссылок –

+0

@JeruLuke Я видел это, и я могу использовать cv2.warpperspective правильно, без проблем. Моя проблема в том, почему я не могу просто умножить матрицу на точки напрямую? – korp

+0

, чтобы сделать это, вы можете использовать функцию cv2.findHomography(). Получите точки из ** исходного ** изображения, которое вы хотите сопоставить с точкой в ​​изображении ** назначения **. –

ответ

0

Это старый вопрос, но я только что видел его в . Связанный с на странице вопроса Я недавно ответил, и подумал, что я бы звонил сюда, если другие наткнутся на это. См. here, чтобы ответить на прямой вопрос о том, почему ваши баллы были неправильными, и here за очень подробный ответ, в котором обсуждается, как именно преобразуются точки и как вы можете их сопоставить.