1:/** 2: * Isaias Gonzalez <siderevs@gmail.com> 3: */ 4: 5:#include <cv.h> 6:#include <cvaux.h> 7:#include <highgui.h> 8:#include <stdio.h> 9: 10:IplImage* image= 0; 11:IplImage* frame= 0; 12:IplImage* rect= 0; 13: 14:CvPoint2D32f center; 15:CvSize rectsize = cvSize( 0, 0 ); 16: 17:CvCapture* capture = 0; 18: 19:int main( int argc, char** argv ){ 20: int quarter; 21: int quarternumber = 3; 22: 23: center.y=120.0; 24: 25: if( argc != 2 || !(capture = cvCaptureFromAVI( argv[1]))) 26: return -1; 27: 28: cvNamedWindow("original",1); 29: cvNamedWindow("subimagen",1); 30: 31: //get the first frame to obtain some info 32: frame = cvQueryFrame( capture ); 33: printf("widht: %i, height: %i, chanels: %i, origin: %i\n", frame->width, frame->height, frame->nChannels, frame->origin); 34: 35: //the width of the rectangle to extract 36: rectsize.width = frame->width; 37: 38: //centered at the center of the original image 39: center.x = frame->width/2; 40: 41: quarter = frame->height/4; 42: rectsize.height = quarter; 43: 44: //get the desired quarter of image 45: center.y = quarter*(quarternumber-1)+quarter/2; 46: 47: 48: for(;;){ 49: frame = cvQueryFrame( capture ); 50: if( !frame ) 51: break; 52: 53: rect = cvCreateImage(rectsize,8,3); 54: cvGetRectSubPix(frame, rect, center); 55: cvConvertImage(rect, rect, CV_CVTIMG_FLIP); 56: cvShowImage("original", frame); 57: cvShowImage("subimagen", rect); 58: cvWaitKey(30); 59: } 60: cvReleaseCapture( &capture); 61: 62: return 0; 63:}