Как найти расстояние до объекта от камеры asus xtion pro opencv, ROS

Привет, я использую живую камеру asus xtion pro для обнаружения объектов, я также новичок в opencv. Я пытаюсь получить расстояние от объекта до камеры. Обнаруженный объект находится в 2-м изображении. Я не уверен, что я должен использовать, чтобы получить информацию, а затем выполнить расчеты, чтобы получить расстояние между камерой и обнаруженным объектом. Может кто-нибудь посоветовать мне, пожалуйста?

3 ответа

Решение

Короче говоря, вы не можете.

Вы теряете информацию о глубине, и любой видимый пиксель на изображении с вашей камеры по существу превращается в луч, исходящий от вашей камеры.

Итак, как только у вас есть объект в пикселе X, все, что вы знаете, это то, что объект где-то пересекает векторное наложение, основанное на этом пикселе и внутренних / внешних параметрах камеры.

Вам по существу понадобится больше информации. Достаточно одного из следующих:

  • Знайте хотя бы одну координату трехмерной точки (например, все обнаруженное находится на земле или в некоторой известной плоскости).
  • Знайте связь между двумя проецируемыми точками:
    • Либо одна и та же точка из разных положений (известное движение / смещение камеры)
    • или две точки со значительным расстоянием между ними (например, два конца некоторого персонала или бара).

Получив любой из них, вы можете использовать простую тригонометрию (правило трех) для расчета пропущенных значений.


Поскольку я изначально пропустил эту камеру с датчиком глубины, совместимым с OpenNI, можно создать OpenCV с поддержкой этого, определив определение препроцессора. WITH_OPENNI при строительстве библиотеки.

Xtion не является основной веб-камерой. Это стереоскопическая камера, чувствительная к глубине, похожая на Kinect и Primesense. Основным API для этого является OpenNI - см. http://structure.io/openni.

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

Вы должны двигать камеру, записывать видео и использовать сложную технику, такую ​​как эта. Обычно 3d-информация создается как минимум из 2-х двухмерных изображений, взятых из 2 разных мест. Вы также должны точно знать расстояние и поворот между двумя изображениями. Обычная техника - иметь 2 камеры с точно измеренным расстоянием между ними.

Другие вопросы по тегам