2012-11-15 27 views
5

私は写真を撮りたい2つのウェブカムを持っています。次のコードはそれを達成します:pygameでウェブカメラのフォーカスを制御する方法はありますか?

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') 

しかし、私の(ロジクール)カメラ上では動作しません、と私はからこの出力を取得コマンドライン(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 
+0

最初に行うこと - 最新バージョンをダウンロードし、ソースからビルドする。これは活発なプロジェクトのようです。 http://sourceforge.net/p/libwebcam/wiki/Home/ – avishayp

+1

これはウェブカメラのモデルに依存しませんか?問題が発生しているWebカメラの特定のモデル番号に言及することから始めることができます。このモデルでは、手動でフォーカスを調整することはできません。 – jozzas

+0

モデルはLogitech HD Pro Webcam C920で、フォーカス機能をサポートしています。 – Delta

答えて

8

この

sudo apt-get install v4l-utils 

とPythonで

os.system('v4l2-ctl -d 0 -c focus_auto=0') 
os.system('v4l2-ctl -d 0 -c focus_absolute=250') 
012を実行します
関連する問題