I have two web cams with which I wish to take pictures. The following code accomplish that:
import pygame
import pygame.camera
from datetime import datetime
import Image
import threading
import time
class Camera (threading.Thread):
def __init__(self, camera):
self.camera = pygame.camera.Camera(camera,(2304,1536))
self.stop = False
threading.Thread.__init__(self)
def run(self):
self.camera.start()
srf = self.camera.get_image()
img = pygame.image.tostring(srf, 'RGB')
img = Image.fromstring('RGB', srf.get_size(), img)
img.save('%s.png'%datetime.now(), 'PNG')
s = datetime.now()
pygame.init()
pygame.camera.init()
cam1 = Camera("/dev/video0")
cam2 = Camera("/dev/video1")
cam1.start()
cam2.start()
cam1.join()
cam2.join()
print datetime.now() - s
But I need to set the focus.
I found these command lines:
apt-get install uvcdynctrl
uvcdynctrl --device=/dev/video1 --clist
uvcdynctrl --device=/dev/video1 --get='Focus, Auto'
uvcdynctrl --device=/dev/video1 --set='Focus, Auto' 0
uvcdynctrl --device=/dev/video1 --set='Focus (absolute)' 20
I though could use the following:
import os
os.system('command to set the focus')
But on my (Logitech) camera it doesn't work, and I get this output from the command line (Ubuntu 12.04, python 2.7):
uvcdynctrl --device=/dev/video1 --set='Focus, Auto' 0
[libwebcam] Unsupported V4L2_CID_EXPOSURE_AUTO control with a non-contiguous
range of choice IDs found
[libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0901, name = 'Exposure, Auto'
[libwebcam] Unsupported V4L2_CID_EXPOSURE_AUTO control with a non-contiguous
range of choice IDs found
[libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0901, name = 'Exposure, Auto'
Edit:
The camera is a Logitech HD Pro Webcam C920
and running:
uvcdynctrl --device=/dev/video1 --clist
Gives the output:
[libwebcam] Unsupported V4L2_CID_EXPOSURE_AUTO control with a non-contiguous
range of choice IDs found
[libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0901, name = 'Exposure, Auto'
[libwebcam] Unsupported V4L2_CID_EXPOSURE_AUTO control with a non-contiguous
range of choice IDs found
[libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0901, name = 'Exposure, Auto'
Listing available controls for device /dev/video1:
Brightness
Contrast
Saturation
White Balance Temperature, Auto
Gain
Power Line Frequency
White Balance Temperature
Sharpness
Backlight Compensation
Exposure (Absolute)
Exposure, Auto Priority
Pan (Absolute)
Tilt (Absolute)
Focus (absolute)
Focus, Auto
Zoom, Absolute
execute this
sudo apt-get install v4l-utils
and in python
os.system('v4l2-ctl -d 0 -c focus_auto=0')
os.system('v4l2-ctl -d 0 -c focus_absolute=250')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With