python pygame blit。获取要显示的图像

时间:2011-12-11 02:22:00

标签: python pygame geometry-surface blit

我正在尝试通过pygame让我的网络摄像头显示视频。这是代码:

# import the relevant libraries
import time
import pygame
import pygame.camera
from pygame.locals import *
# this is where one sets how long the script
# sleeps for, between frames.sleeptime__in_seconds = 0.05
# initialise the display window
pygame.init()
pygame.camera.init()

screen = pygame.display.set_mode((640, 480), 0, 32)

# set up a camera object
cam = pygame.camera.Camera(0)
# start the camera
cam.start()

while 1:

    # sleep between every frame
    time.sleep( 10 )
    # fetch the camera image
    image = cam.get_image()
    # blank out the screen
    screen.fill((0,0,2))
    # copy the camera image to the screen
    screen.blit( image, ( 0, 0 ) )
    # update the screen to show the latest screen image
    pygame.display.update()

当我尝试这个时,我从screen.blit(图像,(0,0))部分得到错误

Traceback (most recent call last):
  File "C:\Python32\src\webcam.py", line 28, in <module>
    screen.blit( image, ( 0, 0 ) )
TypeError: argument 1 must be pygame.Surface, not None

我认为这是因为我没有将图像转换为与pygame有关的任何内容,但我不知道。

任何帮助都会受到赞赏。谢谢。

-Alex

好的,这是新代码: 这个工作是因为它将图片保存到当前文件夹。弄清楚为什么最后一个工作。虽然= \

,但屏幕仍为黑色
# import the relevant libraries
import time
import pygame
import pygame.camera
from pygame.locals import *
# this is where one sets how long the script
# sleeps for, between frames.sleeptime__in_seconds = 0.05
# initialise the display window
pygame.init()
pygame.camera.init()
# set up a camera object
size = (640,480)
screen = pygame.display.set_mode(size,0)


surface = pygame.surface.Surface(size,0,screen)

cam = pygame.camera.Camera(0,size)
# start the camera
cam.start()

while 1:

    # sleep between every frame
    time.sleep( 10 )
    # fetch the camera image
    pic = cam.get_image(surface)
    # blank out the screen
    #screen.fill((0,0,0))
    # copy the camera image to the screen
    screen.blit(pic,(0,0))
    # update the screen to show the latest screen image
    p=("outimage.jpg")

    pygame.image.save(surface,p)
    pygame.display.update()

1 个答案:

答案 0 :(得分:1)

尝试像这样创建相机。

cam = pygame.camera.Camera(camlist[0],(640,480))

这就是在pygame文档的this page上完成的。


查看pygame.camera的{​​{3}},我发现了两件可能会有所帮助的事情。首先,

  

Pygame目前仅支持Linux和v4l2相机。

     

实验!:这个api可能会在后来的pygame中改变或消失   版本。如果你使用它,你的代码很可能会破坏   下一个pygame发布。

在想知道为什么会出乎意料地失败时,请记住这一点。

在更高调的音符上......您可以尝试拨打camera.get_raw()并打印结果。它应该是一个包含原始图像数据的字符串。如果你得到一个空字符串None或一些无意义的文字:请在这里与我们分享。它会告诉你是否从相机中得到任何东西。

  

从相机中获取图像作为相机的原始像素格式中的字符串。对于与其他库集成很有用。