title: How to capture still image from webcam on linux
body: <p>I am trying to write a C++/Qt program for linux, where I take a still image photo from a webcam, make some transformations to a photo (cropping, resizing, etc.), and save it to a jpeg file.</p>
  
  <p>But I have encountered some problems. The main problem is that standart UVC (usb video device class) linux driver currently does not support direct still image capture: <a href="http://www.ideasonboard.org/uvc/">http://www.ideasonboard.org/uvc/</a> .</p>
  
  <p>So, there are two possible ways to capture still image. You can take one frame from the video stream from the camera, or you can take a separate photo, like a digital portable camera. The second way is not supported in linux uvc driver, so the first method is the only way. But the problem is, that if you want to take a frame from the video stream, the size of the photo can't be bigger than the size of video in the video preview window. So, if I want to take 2 megapixel photo, I must start videostream with the size 1600x1200, which is not so comfortable (At least, in Qt the size of the videostream depends on the videopreview window size).</p>
  
  <p>I know that there is video for linux 2 API, which may be helpful in this task, but I don't know how to use it. I am currently learning gstreamer, but I can't now figure out how to do what I need using these tools.</p>
  
  <p>So, I will appreciate any help. I think it is not a hard problem for people who know Linux, GStreamer, v4l2 API, and other linux-specific things.</p>
  
  <p>By the way, the program will be used only with web-camera Logitech C270 HD.</p>
  
  <p>Please, help me. I don't know what API or framework can help me do this. May be you know.</p>