2011-12-11 104 views
2

我試圖讓我的攝像頭通過pygame顯示視頻。下面是代碼:python pygame blit。獲取圖像以顯示

# 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() 
+0

'''cam.get_image()'''正在返回''''''''。 – FakeRainBrigand

+0

錯誤意味着圖像是無,而不是它是錯誤格式的有效圖像。顯然cam.get_image()出於某種原因失敗。 – Dave

回答

1

嘗試創建一個像這樣的相機。

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

這就是它是如何在pygame的文檔的this page完成。


縱觀API pagepygame.camera,我發現了兩件事情,可能的幫助。首先,

pygame目前只支持Linux和v4l2相機。

實驗!:這個API可能會在後面的pygame 發佈中改變或消失。如果你使用這個,你的代碼將很有可能與下一個pygame發行版的 相違背。

請記住,當想知道爲什麼這個令人驚訝的失敗。

在更多的節拍音符上...您可以嘗試撥打camera.get_raw()並打印結果。它應該是一個包含原始圖像數據的字符串。如果你得到一個空字符串,None,或者一些無意義的文本:請在這裏與我們分享。它會告訴你是否從相機獲取任何東西。

從相機中獲取圖像的本機像素格式中的字符串。用於與其他庫集成。

+0

您可能需要調整圖片分辨率,具體取決於您的相機。 – FakeRainBrigand

+0

它沒有找到我的相機。這就是爲什麼我以另一種方式做到這一點,而且這部分工作正常。只是必須將圖像放到屏幕上的部分不起作用 – Avovk

+0

好吧,無論哪種方式,'''get_image'''都會失敗。所以之前的一些事情沒有成效。 – FakeRainBrigand