4

我们正在使用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 图像。我们关注这个链接,但不幸的是函数 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 函数。所以我们被困在这里:你能帮助我们吗?谢谢 :-)

4

1 回答 1

4

根据 Damian Yerrick 的评论,在 Python 3 下,结果pygame.image.tostring()是 a 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(webcamImage,"RGBA",False)
im = Image.frombytes("RGBA",(1280,720),pil_string_image)
于 2016-02-17T18:08:13.090 回答