importpygamedeflist_cameras():return[0]# this just cycles through all the cameras trying to open themcameras=[]forxinrange(256):try:c=Camera(x)except:breakcameras.append(x)returncamerasdefinit():globalvidcapimportvidcapasvcvidcap=vcdefquit():globalvidcappassdelvidcapclassCamera:def__init__(self,device=0,size=(640,480),mode="RGB",show_video_window=0):"""device: VideoCapture enumerates the available video capture devices on your system. If you have more than one device, specify the desired one here. The device number starts from 0. show_video_window: 0 ... do not display a video window (the default) 1 ... display a video window Mainly used for debugging, since the video window can not be closed or moved around. """self.dev=vidcap.new_Dev(device,show_video_window)width,height=sizeself.dev.setresolution(width,height)defdisplay_capture_filter_properties(self):"""Displays a dialog containing the property page of the capture filter. For VfW drivers you may find the option to select the resolution most likely here. """self.dev.displaycapturefilterproperties()defdisplay_capture_pin_properties(self):"""Displays a dialog containing the property page of the capture pin. For WDM drivers you may find the option to select the resolution most likely here. """self.dev.displaycapturepinproperties()defset_resolution(self,width,height):"""Sets the capture resolution. (without dialog) """self.dev.setresolution(width,height)defget_buffer(self):"""Returns a string containing the raw pixel data. """returnself.dev.getbuffer()defstart(self):""" """defset_controls(self,**kwargs):""" """defstop(self):""" """defget_image(self,dest_surf=None):returnself.get_surface(dest_surf)defget_surface(self,dest_surf=None):"""Returns a pygame Surface. """abuffer,width,height=self.get_buffer()ifabuffer:if1:surf=pygame.image.frombuffer(abuffer,(width,height),"RGB")# swap it from a BGR surface to an RGB surface.r,g,b,a=surf.get_masks()surf.set_masks((b,g,r,a))r,g,b,a=surf.get_shifts()surf.set_shifts((b,g,r,a))surf=pygame.transform.flip(surf,0,1)# if there is a destination surface given, we blit onto that.ifdest_surf:dest_surf.blit(surf,(0,0))returndest_surfelse:# Need to flip the image.surf=pygame.image.fromstring(abuffer,(width,height),"RGB",1)# swap it from a BGR surface to an RGB surface.r,g,b,a=surf.get_masks()surf.set_masks((b,g,r,a))r,g,b,a=surf.get_shifts()surf.set_shifts((b,g,r,a))returnsurfif__name__=="__main__":importpygame.examples.camerapygame.camera.Camera=Camerapygame.camera.list_cameras=list_cameraspygame.examples.camera.main()