我们使用 Raspberry Pi + Python 3.4 + PyGame 来捕获特定USB网络摄像头中的图像。我们使用这个简单的代码来捕获(它工作正常):
pygame.camera.init()
cam = pygame.camera.Camera(pygame.camera.list_cameras()[0],(1280,720))
cam.start()
time.sleep(1)
webcamImage = cam.get_image()
问题出现在这里:我们必须将此 webcamImage 转换为PIL图像。我们按照this链接,但遗憾的是函数Image.fromstring()不再存在。所以,我们无法做到:
pil_string_image = pygame.image.tostring(webcamImage, "RGBA",False)
pil_image = Image.fromstring("RGBA",(1280,720),pil_string_image)
PIL表示不推荐使用Image.fromstring(),并建议使用函数 Image.frombytes()。显然,我们没有找到将webcamImage转换为字节数组的等效pygame.image函数。所以我们被困在这里:你能帮助我们吗? 谢谢: - )
答案 0 :(得分:3)
根据Damian Yerrick的评论,在Python 3下,pygame.image.tostring()
的结果是bytes
,尽管有方法的名称。因此,我们可以通过这个简单的代码摆脱这种情况:
pygame.camera.init()
cam = pygame.camera.Camera(pygame.camera.list_cameras()[0],(1280,720))
cam.start()
time.sleep(1)
webcamImage = cam.get_image()
pil_string_image = pygame.image.tostring(img,"RGBA",False)
im = Image.frombytes("RGBA",(1280,720),pil_string_image)