roboforum.ru

Технический форум по робототехнике.

OpenCV 2.2 захват видео в потоке (Вопрос)

OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 03 фев 2011, 18:55

Здравствуйте уважаемые.
Вопрос короткий и по существу:
Имеется скажем 2, 3 или 4 камеры, необходимо работать с каждой в своем потоке.
Кто решал подобный вопрос, как реализовать многопоточность ?
Спасибо.
Последний раз редактировалось EdGull 03 фев 2011, 19:01, всего редактировалось 1 раз.
Причина: Не чего так орать
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение noonv » 04 фев 2011, 01:24

а с какими проблемами вы столкнулись?
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 04 фев 2011, 17:37

Для каждого захвата нужно создать нить (thread), в которой этот захват будет обрабатываться.
Всего захватов может быть, от 1-4, нужно их выводить на одну форму.

Код: Выделить всёРазвернуть
...

#include "cv.h"
#include "highgui.h"

int main(int argc, char** argv)
{
   cvNamedWindow("WebCamera", CV_WINDOW_AUTOSIZE);

   CvCapture* capture1 =cvCreateFileCapture( "test1.avi" );
   CvCapture* capture2 =cvCreateFileCapture( "test2.avi" );
   CvCapture* capture3 =cvCreateFileCapture( "test3.avi" );
   CvCapture* capture4 =cvCreateFileCapture( "test4.avi" );

   ...

   while(true) {

      image1 = cvQueryFrame(capture1);
      image2 = cvQueryFrame(capture2);
      image3 = cvQueryFrame(capture3);
      image4 = cvQueryFrame(capture4);

      ...

      cvShowImage("Example1", image1);
      cvShowImage("Example2", image2);
      cvShowImage("Example3", image3);
      cvShowImage("Example4", image4);

      if(cvWaitKey(0) == 27) break;

      cvRelease...
   
}


Нужен поток, чтобы не было задержек...
Последний раз редактировалось novoalex 04 фев 2011, 17:53, всего редактировалось 1 раз.
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение =DeaD= » 04 фев 2011, 17:40

Это постановка задачи, а с какими проблемами вы столкнулись?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение noonv » 04 фев 2011, 17:40

это понятно :) так с какими проблемами вы при этом столкнулись? :)
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 04 фев 2011, 17:58

http://nashruddin.com/Streaming_OpenCV_Videos_Over_the_Network

Пытался реализовать разными способами, не получается, короче нужен готовый пример, где правильно реализованы потоки..

Чтобы функции захватов были объявлены выше или в заголовочных файлах классами, или еще как..., а в main только запускались потоки... В общим как-то так.
Просто я с потоками в с++, первый раз сталкиваюсь.

Спасибо.

Но мне по сети не надо, локально нужно реализовать...

Как в данном случае можно использовать #include <pthread.h>?
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение noonv » 04 фев 2011, 18:06

а при чём тут OpenCV? Раз хотите писать многопоточное приложение - вам так или иначе нужно разбираться с потоками :) Определяетесь с ОС под которую вам это нужно и вперёд :)
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение EDV » 04 фев 2011, 18:10

Я попробую в общих чертах пофилософствовать. Если речь идёт о потоках (и их взаимодействии) то проблема – приложение иногда вылетает с «крэшем» (злой анхенделид эксепшен).

Основной процесс обеспечивает взаимодействие с пользователем (GUI), потоки – захватывают изображение и выводят его в диалоговое окно (причём напрямую), и соответственно конфликтуют с основным процессом, которые в этот же момент может занимать/вызывать ресурсы, которыми пользуются потоки (к примеру отрисовка окна). Тут просто нужно правильно построить взаимодействие между основным процессом и потоками: расставить критические секции к примеру, или через события (MFC), сигнал/слот (QT4) и т.д.
Аватара пользователя
EDV
 
Сообщения: 1016
Зарегистрирован: 06 июн 2007, 15:19
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 04 фев 2011, 18:27

Извините за не внимательность, выше указанная ссылка показывает решение подобных задач полностью.
Но от комментариев не откажусь.

Спасибо.

ubuntu 10.04, opencv 2.2, wxWidgets, netbeans 6

Добавлено спустя 14 минут 14 секунд:
Все 4 потока захвата, которые я хочу реализовать, могут использовать какой то один IplImage, для того чтобы сделать подобие квадратора?
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение noonv » 04 фев 2011, 18:32

да. только не забудьте обрамить работу с этой картинкой мьютексом.
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 04 фев 2011, 18:47

Понятно.
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 18 фев 2011, 12:49

Если я хочу вывести изображение с 1..N камер, каким образом лучше поступить: склеить все фреймы и вывести один общий, или же использовать контролы (например panel) компоновать их и выводить в каждый, соответствующий фрейм. Естественно все захваты в потоках.

Как лучще поступить, как будет производительней?

Спасибо.
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 21 фев 2011, 09:56

Друзья, вопрос открыт.
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение =DeaD= » 21 фев 2011, 10:18

За это время можно было уже и эксперимент провести.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: OpenCV 2.2 захват видео в потоке (Вопрос)

Сообщение novoalex » 21 фев 2011, 12:44

Я конечно подозреваю, что отрисовка на компонентах займет больше времени, но подтверждения моим догадкам нет...
novoalex
 
Сообщения: 8
Зарегистрирован: 09 окт 2010, 15:49

След.

Вернуться в Компьютерное зрение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11