Можно ли измерить расстояние до объекта с помощью камеры?

Можно ли измерить расстояние до объекта с помощью камеры телефона. Я имею в виду, что в своем приложении я запускаю камеру, обращаясь к камере к объекту (скажем, дом), а затем нажимаю кнопку, и он вычисляет расстояние и показывает мне на экране.

Если возможно, где я могу найти учебник или информацию об этом?

Ну, вы должны прочитать, как ithinkdiff.com «измеряет» расстояние:

Использует угол iPhone для оценки расстояния до точки на земле. Держите iPhone перед собой, выровняйте точку в камере и получите прямое считывание расстояния. Затем расстояние можно использовать в инструменте скорости.

Таким образом, в основном это занимает высоту, где вы держите телефон (уровень глаз), тогда вы должны указывать камеру на точку, где объект касается земли. Затем телефон измеряет наклон и с простой тригонометрией вычисляет расстояние.

Это, конечно, не очень точно. Он становится менее точным, чем дальше объект. Также он предполагает, что земля является уровнем.

Я согласен, что на вопрос ответили адекватно (с очевидными предостережениями о необходимости определения уровня и возможных проблем с точностью), но для тех, кто не считает, что это может быть сделано или что ему нужна видеокамера, позвольте мне объяснить математику низкого уровня Нужно было это сделать ….

Alt text

На рисунке выше показано, что я стоял вне дома. Горизонталь (d) – это расстояние, которое я хочу измерить, а вертикаль (h) – высота над землей, на которой я держу камеру. В этом случае «h» является известным значением, когда я держу камеру андроида на уровне глаз (около 67 дюймов или 1,7 метра). Когда я наклоняю камеру, чтобы прицелиться прямо в точку, где мой дом встречает землю, все программное обеспечение, которое нужно сделать, это выработать угол (а) относительно вертикали, и он может вычислять «d», используя …

d = h * tan a 

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

У вас есть угол в акселерометре телефона. Если вы вычислите касательную этого угла и умножьте ее на высоту объектива камеры, вы получите расстояние.

Вы можете использовать ту же технику, что и наш глаз, чтобы получить представление о глубине и расстоянии. Получите 2 изображения одного и того же объекта с двух разных позиций камеры. Дисталь или пиксели между объектами в двух изображениях обратно пропорциональны расстоянию между камерой и объектом. Реализация доступна на странице https://github.com/agnelvishal/Distance-between-camera-and-object. Вот исследовательский документ http://dsc.ijs.si/files/papers/S101%20Mrovlje.pdf

Нет. Только с двумя камерами в стерео режиме, например, с кинетом xbox 360. Требуется не менее 3 точек для триангуляции расстояния.

Я думаю, что это приложение использует подход MisterSquonk (его бесплатный). Посмотрите на технику «Тригонометрия».

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

Один из способов добиться этого – использовать DPI на вашем устройстве. Вы можете сделать снимок и рассчитать высоту. Но вам понадобится другой объект в качестве ссылки, и тогда вы сможете узнать, что проблема с этим методом может быть перспективой между объектами