title: OpenCV crop live feed from camera
body: <p>How can I get <strong>properly</strong> one resolution feed from camera in OpenCV (640x320) but cut it into half and display only one half of the frame (320x240). So not to scale down, but to actually <strong>crop</strong>. I am using OpenCV 2.4.5, VS2010 and C++</p>
  
  <p>This quite standard code gets 640x480 input resolution and I made some changes to crop resolution to 320x240. <strong>Should I use Mat instead of IplImage, and if so what would be the best way?</strong> </p>
  
  <pre><code>#include "stdafx.h"
  #include &lt;iostream&gt;
  #include "opencv2/core/core.hpp"
  #include "opencv2/imgproc/imgproc.hpp"
  #include "opencv2/highgui/highgui.hpp"
  
  using namespace std;
  char key;
  int main()
  {
      cvNamedWindow("Camera_Output", 1);    //Create window
  
      CvCapture* capture = cvCaptureFromCAM(1);  //Capture using camera 1 connected to system
      cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, 640 );
      cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, 480 );
  
      while(1){ //Create loop for live streaming
  
          IplImage* framein = cvQueryFrame(capture); //Create image frames from capture
  
          /* sets the Region of Interest  - rectangle area has to be __INSIDE__ the image */
          cvSetImageROI(framein, cvRect(0, 0, 320, 240));
  
          /* create destination image  - cvGetSize will return the width and the height of ROI */
          IplImage *frameout = cvCreateImage(cvGetSize(framein),  framein-&gt;depth, framein-&gt;nChannels);
  
          /* copy subimage */
          cvCopy(framein, frameout, NULL);
  
          /* always reset the Region of Interest */
          cvResetImageROI(framein);
  
          cvShowImage("Camera_Output", frameout);   //Show image frames on created window
  
          key = cvWaitKey(10);     //Capture Keyboard stroke
          if (char(key) == 27){
              break;      //ESC key loop will break.
          }
      }
  
      cvReleaseCapture(&amp;capture); //Release capture.
      cvDestroyWindow("Camera_Output"); //Destroy Window
      return 0;
  }
  </code></pre>