Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
Granin
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 19
#1

OpenCV, две камеры (стереозрение) - C++

18.04.2014, 11:12. Просмотров 3148. Ответов 4
Метки нет (Все метки)

Доброго суток времени. Надеюсь раздел выбрал верный.

Перелопатил много страниц, большинство тем очень старые и ответов полных нету. Посему прощу вашей помощи.

Задача такая. Есть две обычные веб-камеры расположенных на прямой линии (как глаза), нужно сделать:
1) Найти объект на видео исходя из-заданного шаблона. (в идеале объект может двигаться после обнаружения, нужно продолжать следить) (что по идее с стереозрением должно быть точнее чем с одной камерой нет? проще выделить объект)
2) Рассчитать расстояние до него.

Для одной камеры поиск объекта расписан более менее.
Но вот с двумя хотелось бы найти готовое решение дабы разбирать уже их.
Т.е. даже банальное подключение камер. К двум разным usb? Как обрабатывать?

Потом хотелось бы обнаружение объекта уже по 3D шаблону, ведь наверняка точнее будет.

Вообщем буду благодарен за ссылки и информацию, заранее большое спасибо.

Добавлено через 6 минут
да не написал, средствами OpenCV.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2014, 11:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OpenCV, две камеры (стереозрение) (C++):

Захват видео с камеры. OpenCV - C++
Добрый вечер, форумчане. Возникла проблема с захватом видео. Применяю библиотеку openCV 2.1. С одной камеры (USB) захват видео проходит...

C++ получение данных с камеры без OpenCV - C++
Всем привет. Возник такой вопрос: как можно получить данные с вебкамеры без использования OpenCV. Как к ней коннектиться, в каком формате...

В две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную переменную? - C++
Как в с++ в две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную...

OpenCV - C++
привет. если не в тему - прошу перенести в правильный раздел. у меня вопрос по компьютерному зрению. У меня есть черно-белая фотография с...

OpenCV 3.0 - C++
Здравствуйте, решил познакомиться с OpenCV, но не могу поключить. При прочтении мануалов я пытался повторять, но обнаружил, что некоторых...

OpenCV - C++
уважаемые участники, я чайник по ОpenCV. помогите?! с чего начать и как обучаться, чему стоит а чему нет

4
dhampire
Сообщений: n/a
21.04.2014, 17:49 #2
банальное подключение камер:
да к разным USB..
захват? просто захватываешь одну камеру потом вторую:

C
1
2
3
4
5
CvCapture* capture1 = cvCaptureFromCAM( 0 );
assert(capture1);
Sleep(1000); // потому-что иногда хватает одну камеру 2 раза
CvCapture* capture2 = cvCaptureFromCAM( 1 );
assert(capture2);

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

А если у тебя камеры уже установлены правильно, и в идеале они у тебя одинаковые, то в каталоге где лежит OpenCV, есть примеры работы с двумя камерами
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
21.04.2014, 19:46 #3
Сейчас будет много пояснительной нудятины.
Итак. Задача первая. Детекция и слежение за объектом. На эту тему полно всего под любой набор исходных условий. Стоит только отметить, что для этого вторая камера не нужна. Даже самый хитрый алгоритм сработает на одной камере. На момент когда я занимался этим вопросом, лучшим был алгоритм Predator кажется из одного из британских университетов (на ютубе видео есть). Теперь ко второму вопросу.
Определение расстояния. Сразу скажу, что если делать "точную машину", а не что-то с погрешностью +/- километр, то это математический гроб. Но сначала физика. Да, две камеры. Но есть большое НО. Во-первых, нужно обеспечить бинокулярность зрения. То есть. Размещение камер относительно друг друга должно быть жестко задано и откалибровано с тем чтобы удовлетворять двум главным требованиям:
1) оптические центры линз обеих камер должны лежать на одной прямой. Ориентация этой прямой как правило диктуется условиями монтажа.
2) оптические оси должны быть расположены под углом друг к другу (или же к опорной прямой) на фиксированный угол так, чтобы с учетом угла обзора на каждой камере была охвачена одна и та же область пространства. Последнее является ключевым требованием для определения расстояний. Почему? Не вдаваясь в детали скажу просто: иначе тригонометрия рухнет.
Поэтому, как вы понимаете размещение по типу "как глаза" не очень удачная идея (да и глаза у всех разные). Во-вторых, взаимное размещение камер. Есть два способа: "одна под другой" и "две рядом". Каждый из них накладывает свои требования на вычислительную часть.
Про подключение вам ничего не могу сказать так как не в курсе с чем вам придется работать. Скажу только, что да, скорее всего к разным портам, если только у вас нет ограничений/спец требований по этой части.
Как обрабатывать. В нашей системе было четыре главных потока: 2 потока работы с камерами, поток сопряжения/контроля/хранения и первичной обработки изображений/и еще чего-то, и вычислительный поток.
Собственно алгоритмы. Все они как правило основаны на двух вещах: бинокулярности и какой-то аппроксимации. Есть правда исключение: с гордостью могу сказать, что в нашей стране был разработан алгоритм, способный определять расстояния по одной камере. Очень крутая штука. Работала с не худшей точностью, что и стерео-алгоритм того же автора. Из тех что у меня на памяти могу предложить вам поковырять алгоритм Census для начала.
Такие дела.
2
ЕленаСол
1 / 1 / 0
Регистрация: 23.07.2012
Сообщений: 13
04.10.2014, 16:26 #4
Цитата Сообщение от HighPredator Посмотреть сообщение
Есть правда исключение: с гордостью могу сказать, что в нашей стране был разработан алгоритм, способный определять расстояния по одной камере. Очень крутая штука. Работала с не худшей точностью, что и стерео-алгоритм того же автора.
А можно по-подробнее. Что-ли камера перемещается? Или фокусное расстояние разное?
0
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
06.10.2014, 08:33 #5
Цитата Сообщение от ЕленаСол Посмотреть сообщение
А можно по-подробнее.
Честно говоря, даже не знаю как я вам смогу помочь. Я ведь не являюсь его автором, и не был в команде имплементации -- это другие ребята делали.
1
06.10.2014, 08:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2014, 08:33
Привет! Вот еще темы с ответами:

OpenCV - C++
Всем здрасти :D Начал изучать OpenCV, и стоит такая задача. Есть видеофайл, который нужно вывести на экран, но вывести его нужно так:...

Определить пересекаются две прямые, параллельны или совпадают.Две прямые заданы уравнениями: ax+by+c=0, px+qy+r=0 - C++
Определить пересекаются две прямые, параллельны или совпадают. Две прямые заданы уравнениями: ax+by+c=0, px+qy+r=0

Документация по OpenCV - C++
Существует ли хорошая документация на русском языке по OpenCV ?

OpenCV установка - C++
Здравствуйте. Задалась целью освоить базовые вещи в opencv. Настроила, создала свой первый проект по туториалу с ютуба...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru