pygame.camera可以使用多少台相机?

时间:2014-01-26 16:07:01

标签: python camera pygame

pygame.camera可以在同一时间使用多少台摄像机?

我尝试使用3个网络摄像头,但程序不起作用!当我使用一个或两个网络摄像头时 - 没关系。 = \

有我的代码:

# import the relevant libraries
import time
import sys
import pygame
import pygame.camera
from pygame.locals import *
from pygame.tests.base_test import pygame_quit
pygame.init()

s_width = 645
s_height = 600
width = 640
height = 480

class detectCameras(object):

    def __init__(self):
        pygame.camera.init()

class webCamera(object):

    def __init__(self,cam_number,cam_resolution=[640,480],color_mode="RGB"):
        self.cam_number = cam_number
        self.cam_resolution = cam_resolution
        self.color_mode = color_mode
        self.cam = pygame.camera.Camera(self.cam_number,self.cam_resolution,self.color_mode)

    def start(self):
        self.cam.start()

    def stop(self):
        self.cam.stop()

    def get_b(self):
        return self.cam.get_buffer()

    def get_image(self, new_width = 320, new_height = 240):
        self.img = self.cam.get_image()
        self.new_width = new_width
        self.new_height = new_height
        self.img = pygame.transform.scale(self.img, (self.new_width,self.new_height))
        return self.img

screen = pygame.display.set_mode([s_width,s_height])
# set window title
pygame.display.set_caption("OMS CCTV")
# set icon
pygame.display.set_icon(pygame.image.load('icon.png').convert_alpha())


#detectCameras()
pygame.camera.init()
# set up a camera object

cam_on = webCamera(1) #pygame.camera.Camera(1,[width,height],"RGB")
cam_tw = webCamera(2)
cam_tr = webCamera(3)
# start the camera

cam_on.start()
cam_tw.start()
cam_tr.start()
#
mainloop = 1
while mainloop:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            mainloop = 0
            pygame.quit()
            sys.exit("Exit")
        elif event.type == pygame.K_ESCAPE:
            mainloop = 0
            pygame.quit()
            sys.exit("Exit")
    # sleep between every frame
    time.sleep( 0.05 )


    screen.fill([0,0,0])

    image_on = cam_on.get_image()
    screen.blit( image_on, ( 0, 0 ) )


    image_tw = cam_tw.get_image()
    screen.blit( image_tw, ( 325, 0 ) )


    image_tr = cam_tr.get_image()
    screen.blit( image_tr, ( 0, 245 ) )

    pygame.display.update()

我不知道为什么它不起作用!

2 个答案:

答案 0 :(得分:2)

来自pygame.camera的{​​{1}}:

  

实验!:这个api可能会在以后的pygame版本中发生变化或消失。如果您使用此代码,您的代码很可能会破坏下一个pygame版本。

我认为你不能依赖它支持任何特定数量的相机;也许两个是最好的。

答案 1 :(得分:1)

我遇到了同样的问题。不幸的是,USB2主机控制器只能处理2个未压缩的640x480流的带宽。如果你想使用更多的摄像头,你必须确保计算机中有多个主机控制器,并且最多只能插入2个。

您还可以降低从相机请求的分辨率。