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:}