Znajdowanie odległości od kamery do obiektu o znanej wielkości
Próbuję napisać program za pomocą opencv, aby obliczyć odległość od kamery internetowej do jednej cala białej kuli. Wydaje mi się, że to powinno być dość łatwe, ale z jakiegoś powodu nic nie widzę. Dzięki za pomoc.
2 answers
Można użyć podobieństwa trójkąta, aby skalibrować kąt kamery i znaleźć odległość.
Znasz rozmiar swojej piłki: D
jednostki (np. cm). Umieść go w znanej odległości Z
, powiedzmy 1 metr = 100cm, przed kamerą i zmierz jego pozorną szerokość w pikselach. Wywołaj tę szerokość d
.
Ogniskowa aparatu f
(która różni się nieco w zależności od aparatu) wynosi wtedy f=d*Z/D
.
Kiedy zobaczysz tę piłkę ponownie tą kamerą, a jej pozorna szerokość wynosi d'
pikseli, a następnie przez podobieństwo trójkąta, wiesz, że {[6] } i tak: Z'=D*f/d'
gdzie Z'
jest aktualną odległością kuli od kamery.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-14 04:00:34
Moim zdaniem będziesz potrzebował modelu kamery = modelu kalibracyjnego, jeśli chcesz mierzyć odległość lub inne rzeczy (w świecie rzeczywistym). Model kamery otworkowej jest prosty, liniowy i daje dobre wyniki (ale nie koryguje zniekształceń, (czy są one promieniowe, czy styczne).
Jeśli tego nie użyjesz, będziesz w stanie obliczyć mapę głębi dysproporcji (na przykład jeśli używasz wizji stereo), ale jest ona względna i nie daje absolutnego pomiaru, tylko to, co jest za i co jest przed innym obiektem....
Dlatego myślę, że odpowiedź brzmi: trzeba będzie ją skalibrować w jakiś sposób, może mógłbyś poprosić użytkownika, aby zbliżył się do kuli do kamery, aż cała płaszczyzna obrazu będzie idealnie wypełniona kulą, a po wcześniejszym zapoznaniu się z pomiarem kuli, będziesz w stanie obliczyć odległość....
Julien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-19 21:32:25