Я пытаюсь написать программу, используя opencv, чтобы вычислить расстояние от веб-камеры до одной белой сферы. Я чувствую, что это должно быть довольно легко, но по какой-то причине я рисую пробел. Спасибо за помощь заблаговременно.
Поиск расстояния от камеры до объекта известного размера
Ответ 1
Вы можете использовать сходство треугольника для калибровки угла камеры и нахождения расстояния.
Вы знаете свой размер шарика: D
единиц (например, см). Поместите его на известное расстояние Z
, скажем, 1 метр = 100 см, перед камерой и измерьте его видимую ширину в пикселях. Вызовите эту ширину D
.
Фокусное расстояние камеры f
(которая немного отличается от камеры к камере) составляет f=d*Z/D
.
Когда вы снова видите этот шар с этой камерой, а его видимая ширина d'
пикселей, то по сходству треугольника вы знаете, что f/d'=Z'/D
и, таким образом: Z'=D*f/d'
, где Z'
- это текущее расстояние шара от камеры.
Ответ 2
На мой взгляд, вам понадобится модель камеры = модель калибровки, если вы хотите измерить расстояние или другие вещи (в реальном мире). Модель камеры обскуры проста, линейна и дает хорошие результаты (но не будет исправлять искажения (будь то радиальные или тангенциальные).
Если вы этого не сделаете, вы сможете вычислить карту глубины и глубины (например, если вы используете стереовидение), но она относительна и не дает вам абсолютного измерения, только то, что позади и что находится перед другим объектом....
Поэтому я считаю, что ответ таков: вам нужно каким-то образом его откалибровать, возможно, вы можете попросить пользователя приблизиться к сфере на камеру, пока вся плоскость изображения не будет полностью заполнена шаром и с известным из измерение шара, вы сможете затем вычислить расстояние....
Жюльен,