Привет, я использую asus xtion pro живую камеру для обнаружения моего объекта, я также новичок в opencv. Я пытаюсь получить расстояние от объекта от камеры. Объект обнаружен в 2d-изображении. Я не уверен, что я должен использовать, чтобы получить информацию, а затем выполнить вычисления, чтобы получить расстояние между камерой и объектом. Может ли кто-нибудь посоветовать мне, пожалуйста?Как найти объект на расстоянии от asus xtion pro camera opencv, ROS
ответ
Вкратце: вы не можете.
Вы теряете информацию о глубине, и любой видимый пиксель в изображении вашей камеры по существу превращается в луч, исходящий от вашей камеры.
Итак, если у вас есть объект в пикселе X, все, что вы знаете, это то, что объект где-то пересекается с вектором, основанным на этом пикселе, и внутренними/внешними параметрами камеры.
Вам понадобится дополнительная информация. Достаточно одного из следующих условий:
- Знайте хотя бы одну координату трехмерной точки (например, все обнаружено на земле или в какой-либо известной плоскости).
- знать соотношение между двумя проецируемых точек:
- Либо ту же точку с разных позиций (известное движение камеры/смещение)
- или две точки со значительным расстоянием между ними (как на двух концах некоторых сотрудников или бар).
После того, как вы получили либо, вы можете использовать простую тригонометрию (правило трех), чтобы вычислить недостающие значения.
Поскольку я изначально пропустил эту являющуюся камеру с OpenNI совместимого датчиком глубины, можно построить OpenCV с поддержкой что definining препроцессора определить WITH_OPENNI
при создании библиотеки.
Я не люблю быть тем, кто нарушает это, но то, что вы пытаетесь сделать, невозможно или чрезвычайно сложно с помощью одной камеры.
Вам необходимо перемещать камеру, записывать видеоролик и использовать complex technique such as this. Обычно 3d-информация создается по крайней мере из 2-х 2-х изображений, взятых из двух разных мест. Вы также должны точно знать расстояние и поворот между двумя изображениями. Общая методика состоит в том, чтобы иметь 2 камеры с точно измеренным расстоянием между ними.
Xtion не является базовой веб-камерой. Это стереоскопическая измерительная камера с глубиной, подобная Kinect и Primesense. Основным API для этого является OpenNI - см. http://structure.io/openni.
О, ладно. Поэтому, если бы я обнаружил на известной плоскости, такой как настольный с фиксированными размерами, я смог бы узнать расстояние и сделать что-то подобное? https://www.youtube.com/watch?v=35rbeE1c-D4 – user3868279
Если вы знаете таблицу и ее положение/ориентацию, то вы можете использовать эту информацию для восстановления трехмерных координат всего, что вы видите, в том же (т. е. вы пересекаете упомянутый вектор, исходящий от камеры, с известной плоскостью). Это по существу то, как работают игры с дополненной реальностью с маркерами (например, на 3DS). Известные объекты/размеры (маркеры) используются для определения положения/ориентации чего-то еще (таблицы или земли в этом случае). – Mario
Привет, вы можете направить меня к учебникам о том, как найти координаты известного самолета? – user3868279