I'm using opencv2 and V4L2 driver on my pi and have managed to get a tiny picture out of the Raspberry Pi Camera Module with the following script:
#!/usr/bin/env python
import cv2
camera_port = 0
#Number of frames to throw away while the camera adjusts to light levels
ramp_frames = 60
# Now we can initialize the camera capture object with the cv2.VideoCapture class.
# All it needs is the index to a camera port.
camera = cv2.VideoCapture(camera_port)
# Captures a single image from the camera and returns it in PIL format
def get_image():
# read is the easiest way to get a full image out of a VideoCapture object.
retval, im = camera.read()
return im
# Ramp the camera - these frames will be discarded and are only used to allow v4l2
# to adjust light levels, if necessary
for i in xrange(ramp_frames):
temp = get_image()
print("Taking image...")
# Take the actual image we want to keep
camera_capture = get_image()
file = "test_image_1_from_open_cv2.jpg"
# A nice feature of the imwrite method is that it will automatically choose the
# correct format based on the file extension you provide. Convenient!
cv2.imwrite(file, camera_capture)
# You'll want to release the camera, otherwise you won't be able to create a new
# capture object until your script exits
del(camera)
I run the script from the directory that it's located by:
sudo ./videocaprure_opencv2.py
But the image is tiny!
How can I get a normal size picture?
sudo service uv4l_raspicam stop
andsudo ./videocaprure_opencv2.py
the script still puts out a tiny image. followed by 14 lines ofVIDIOC_QUERYMENU: Invalid argument
– reggie Feb 23 '15 at 15:20sudo service uv4l_raspicam start
it prints out lots of lines of info but one is of interest<notice> [core] Registering device node /dev/video1
, so I then dosudo dd if=/dev/video1 of=snapshot.jpeg bs=11M count=1
which gives me a full size picture using the driver. – reggie Feb 23 '15 at 15:24