Перейти к содержимому
Compvision.ru
brutalis

обработка потокового изображения

Recommended Posts

Всем доброго времени суток.Снова нужна помощь знающих людей.

есть прога через которую получаю картинку с IP камеры. теперь нужно обрабатывать изображение в потоке.

помогите написать , или подскажите где посмотреть, фильтр\обработчик видео в потоке. например разбиение на ржб потоки, распознание объектов и прочее. чем больше тем лучше))

видео получаю таким образом

int KamIndex,c,x,y;

     c = lineEdit->text().toInt() ;

     c = indexBox->text().toInt() ;

     x=x_coordinate->text().toInt() ;

     y=y_coordinate->text().toInt() ;

    KamIndex=c;

    //#####################------------------просто доступ к камере

            // задаём высоту и ширину картинки

            // получаем любую подключённую камеру

        //CVAPI(CvCapture*) cvCreateCameraCapture( int index );

        //CVAPI(int) cvSaveImage( const char* filename, const CvArr* image, const int* params CV_DEFAULT(0) );


        //номер камеры в системе(number of cameras in the system)


        //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


        CvCapture* capture =  cvCaptureFromCAM( KamIndex );

        //cvCreateCameraCapture(CV_CAP_ANY);//

        //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


        if(capture == NULL)

            // Если камер не обнаружено

         proverka();

             assert( capture );


           cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, x);//1280);

           cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT,y);//960);


             // узнаем ширину и высоту кадра

            // double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);

           //  double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);

             //printf("[i] %.0f x %.0f\n", width, height );


             IplImage* frame=0;

             cvNamedWindow("capture", CV_WINDOW_AUTOSIZE);

             printf("[i] press Enter for capture image and Esc for quit!\n\n");

             int counter=0;

             char filename[512];

             while(true){

                     // получаем кадр

                     frame = cvQueryFrame( capture );

                     // показываем

                     cvShowImage("capture", frame);

                     char c = cvWaitKey(33);

                     if (c == 27) { // нажата ESC

                             break;

                     }

                     else if(c == 13) { // Enter

                             // сохраняем кадр в файл

                             sprintf(filename, "Image%d.jpg", counter);

                             printf("[i] capture... %s\n", filename);

                             cvSaveImage(filename, frame);

                             counter++;

                     }

             }

             // освобождаем ресурсы

             cvReleaseCapture( &capture );

             cvDestroyWindow("capture");

Спасибо.

ps в гугле не нашел. прочитал тему http://robocraft.ru/page/opencv/ ,попробовал, не получилось для видео, с картинкой(jpg)работае

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

помогите написать ,исходя из этого кода, или подскажите где посмотреть, фильтр\обработчик видео в потоке. например разбиение на ржб потоки, распознание объектов и прочее. чем больше тем лучше))

использую QT5.1 и opencv

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотрите здесь, (пост №9): http://www.compvision.ru/forum/index.php?showtopic=434

Есть особенность, вывод в окна OpenCV нужно делать в каком-нибудь одном потоке,а не разносить по разным, иначе возникают проблемы.

Ну и естественно нужно позаботиться о синхронизации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

нет. не смотрел. не находил такого. спасибо. почти то что нужно.

просмотрел. запустил. осталось разобраться как оно работает. если поможете разобраться то будет очень хорошо.

Спасибо

зы нужно еще чтобы знаки или жесты распозновал))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

А пока найдите точку входа, поставьте точку останова и пошагово в отладчике шлепайте до непонятного места :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

else if(action->text()=="Grayscale")

    {

        imageProcessingFlags.grayscaleOn=action->isChecked();

        emit newImageProcessingFlags(imageProcessingFlags);

и прочее, а описание алгоритма найти не могу. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дык в ProcessingThread.cpp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

video.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

помогите написать , или подскажите где посмотреть, фильтр\обработчик видео в потоке. например распознание объектов и жестов рук и прочее. чем больше тем лучше))

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

заранее большое спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×