Вопрос

У меня есть изображение, отображаемое на экране, которое не поддержано с помощью cvinitundistortmap & cvremap (с калибровкой камеры), и пользователь нажимает на функцию на изображении. Таким образом, у меня есть координаты пикселей (u, v) функции, и у меня также есть внутренняя матрица и матрица искажения.

Я ищу уравнение 3D-строки в камере/реальных координатах, на которых должна лежать функция, нажатая пользователь. У меня уже есть перпендикулярное расстояние между плоскостью изображения камеры и функцией, поэтому я могу объединить это с вышеупомянутым уравнением, чтобы дать мне координату этой функции (x, y, z).

Звучит легко (обратная внутренняя матрица или что-то в этом роде?) Но я не могу найти пошаговые инструкции нигде. C ++ или C# код предпочтится.

Это было полезно?

Решение

Это немного старый вопрос, но все же может быть полезным для кого -то. Все строки проходят через точку (0,0,0), так:

line.x0 = 0; line.y0 = 0; line.z0 = 0;

вектор направления следующим образом: line.a = (u/fx) - (Cx/fx); line.b = (v/fy) - (cy/fy); line.c = 1;

CX, CY, FX, FY являются параметрами из матрицы камеры. Уравнения объясняются в книге «Обучение OpenCV».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top