Capture single picture with opencv
Question: I have seen several things about capturing frames from a webcam stream using
python and opencv, But how do you capture only one picture at a specified
resolution with python and opencv?


Answer: Use SetCaptureProperty :

    
    
    import cv
    capture = cv.CaptureFromCAM(0)
    cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, my_height)
    cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, my_width)
    cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FORMAT, cv.IPL_DEPTH_32F)
    
    img = cv.QueryFrame(capture)
    

Do not know how to close the camera, though.

Example of a ipython session with the above code :

    
    
    In [1]: import cv
    
    In [2]: capture = cv.CaptureFromCAM(0)
    
    In [7]: img = cv.QueryFrame(capture)
    
    In [8]: print img.height, img.width
    480 640
    
    In [9]: cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, 480/2)
    Out[9]: 1
    
    In [10]: cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, 640/2)
    Out[10]: 1
    
    In [11]: img = cv.QueryFrame(capture)
    
    In [12]: print img.height, img.width
    240 320
    

