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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OpenCV и преобразование Хафа - C++
Всем привет. Хотел создать программу по обработке изображении используя Преобразование Хафа(для нахождения линии). Готовый код взял отсюда...

Объединение изображений, OpenCV - C++
Имеется два изображения. Нужно их объединить в одно. Как объединить: не имеет значения.

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

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

Настройка OpenCV в MinGW - C++
я скачал. Куда теперь кидать? Как подключать? Что-то я не понимаю... Добавлено через 27 минут подскажите пожалуйстааа!!! ...

OpenCV + haarcascade = failed - C++
Не грузиться haarcascade_frontalface_default.xml. CascadeClassifier face; system ( "dir" ); face.load (...

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

Visual Studio C++ и OpenCV - C++
Добрый день.Возникла такая вот проблема. Начал изучать OpenCV и сразу столкнулся с трудностями. Примеры программ на которых пробовал. ...

OpenCV 2.4.8 parse error - C++
Создаю файл vec, но выдается ошибка как на картинке. Опробовал на 2 компьютерах. Содержимой файла good.dat: good\0.bmp 0 0 99 51 ...


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

Или воспользуйтесь поиском по форуму:
HighPredator
5477 / 1843 / 343
Регистрация: 10.12.2010
Сообщений: 5,434
Записей в блоге: 3
06.10.2014, 08:33     OpenCV, две камеры (стереозрение) #5
Цитата Сообщение от ЕленаСол Посмотреть сообщение
А можно по-подробнее.
Честно говоря, даже не знаю как я вам смогу помочь. Я ведь не являюсь его автором, и не был в команде имплементации -- это другие ребята делали.
Yandex
Объявления
06.10.2014, 08:33     OpenCV, две камеры (стереозрение)
Ответ Создать тему
Опции темы

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