7

写真を撮りたいウェブカメラが2つあります。次のコードはそれを実現します。

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

しかし、私は焦点を合わせる必要があります。

私はこれらのコマンドラインを見つけました:

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

私はしかし、以下を使用することができます:

import os
os.system('command to set the focus')

しかし、私の(Logitech)カメラでは機能せず、コマンドライン(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'

編集:

カメラはLogitech HD Pro Webcam C920稼働中です:

uvcdynctrl --device=/dev/video1 --clist

出力を提供します:

[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
4

1 に答える 1

8

これを実行する

sudo apt-get install v4l-utils

そしてパイソンで

os.system('v4l2-ctl -d 0 -c focus_auto=0')
os.system('v4l2-ctl -d 0 -c focus_absolute=250')
于 2012-11-16T16:32:00.510 に答える