在pygame中有没有控制摄像头焦点的方法?

2024-04-27 03:12:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个摄像头,我想用它拍照。以下代码实现了这一点:

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'

编辑:

相机正在运行:

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

Tags: devimportselfautodatetimedevicepygamecontrol
1条回答
网友
1楼 · 发布于 2024-04-27 03:12:04

执行这个

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

相关问题 更多 >