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

destrannik

Пользователи
  • Количество публикаций

    2
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О destrannik

  • Звание
    Новичок
  1. выделение объекта на видео

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

    здравствуйте!я устал шарить по интернету, посмотрел, тут вроде всем помогают очень хорошо! вообщем есть код! запускаем, жмём на энтер для того чтобы запомнился фон! потом инородные объекты программа выделяет синим цветом! вообщем любые изменения по сравнению с фоном программа показывает синим цветом!и вот мне нужно чтобы предмет который задержался в кадре на 10 секунд к примеру выделять контуром(прямоугольником). ну и дальше думаю сделать чтобы сохранялся кадр в папку с подписью. #include <iostream> #include <opencv\cv.h> #include <opencv\highgui.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char** argv) { //Необходимо подключить камеру CvCapture* capture = 0; capture = cvCaptureFromCAM(0); if (!capture) return 1; cvNamedWindow( "Motion", 1 ); IplImage* image; CvScalar color; CvPoint cv1; CvFont font; cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX, 1.3f,1.3f,0,1, 8 ); cv1.x=70; cv1.y=120; color = CV_RGB(24,0,24); int i,j; for(;;) { IplImage* image1; if( !cvGrabFrame( capture )) break; image1 = cvRetrieveFrame( capture ); cvPutText( image1, "Press, when you ready", cv1, &font, color ); cvShowImage( "Motion", image1); if( cvWaitKey(10) >= 0 ) break; } //обучаем фон image = cvRetrieveFrame( capture ); cvShowImage( "Motion", image); //Теперь надо посчитать m для каждых float *m=new float[image->height*image->width*3]; int j1; uchar* ptr; for(i=0;i<image->height;i++) { for(j=0;j<image->width;j++) { for(j1=0;j1<3;j1++) { m[(i*image->width+j)*3+j1]=0; ptr = (uchar*) (image->imageData); m[(i*image->width+j)*3+j1]+=ptr[j*3+i*image->widthStep+j1]; m[(i*image->width+j)*3+j1]=m[(i*image->width+j)*3+j1]/1; } } } //Раз запомнили - можно входить в цикл обработки изображений float porog=60.0; float k=0; for(;;) { IplImage* image1; if( !cvGrabFrame( capture )) break; image1 = cvRetrieveFrame( capture ); ptr = (uchar*) (image1->imageData); for(i=0;i<image->height;i++) { for(j=0;j<image->width;j++) { k=0; for(j1=0;j1<3;j1++) k+=abs(m[(i*image1->width+j)*3+j1]-ptr[j*3+i*image1->widthStep+j1]); if (k>=porog) { for(j1=0;j1<3;j1++) { if (j1==0) ptr[j*3+i*image1->widthStep+j1]=255; else ptr[j*3+i*image1->widthStep+j1]=100; } } } } cvShowImage( "Motion", image1); if( cvWaitKey(10) >= 0 ) break; } //Удаляем все cvReleaseCapture( &capture ); cvDestroyWindow( "Motion" ); delete m; }
×