Подтвердить что ты не робот

Поиск расстояния от камеры до объекта известного размера

Я пытаюсь написать программу, используя opencv, чтобы вычислить расстояние от веб-камеры до одной белой сферы. Я чувствую, что это должно быть довольно легко, но по какой-то причине я рисую пробел. Спасибо за помощь заблаговременно.

4b9b3361

Ответ 1

Вы можете использовать сходство треугольника для калибровки угла камеры и нахождения расстояния.
Вы знаете свой размер шарика: D единиц (например, см). Поместите его на известное расстояние Z, скажем, 1 метр = 100 см, перед камерой и измерьте его видимую ширину в пикселях. Вызовите эту ширину D.
Фокусное расстояние камеры f (которая немного отличается от камеры к камере) составляет f=d*Z/D.

Когда вы снова видите этот шар с этой камерой, а его видимая ширина d' пикселей, то по сходству треугольника вы знаете, что f/d'=Z'/D и, таким образом: Z'=D*f/d', где Z' - это текущее расстояние шара от камеры.

Ответ 2

На мой взгляд, вам понадобится модель камеры = модель калибровки, если вы хотите измерить расстояние или другие вещи (в реальном мире). Модель камеры обскуры проста, линейна и дает хорошие результаты (но не будет исправлять искажения (будь то радиальные или тангенциальные).

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

Поэтому я считаю, что ответ таков: вам нужно каким-то образом его откалибровать, возможно, вы можете попросить пользователя приблизиться к сфере на камеру, пока вся плоскость изображения не будет полностью заполнена шаром и с известным из измерение шара, вы сможете затем вычислить расстояние....

Жюльен,