如何以编程方式捕获网络摄像头照片

Cer*_*rin 19 python video ubuntu webcam

Ubuntu 11.10中最简单的方法是以编程方式引导(从Bash或Python)用户捕获自己的网络摄像头照片?

我可以启动一个简单的应用程序,如奶酪,但我没有看到一种简单的方法来立即检测或检索它捕获的照片.我也可以通过OpenCV直接访问和记录网络摄像头流,但我必须重新发明GUI以与用户进行通信.

是否有任何类型的脚本是一个快乐的媒介,我可以在其中启动它,并在stdout上打印用户拍摄的图像的文件名?

jsb*_*eno 38

我喜欢使用pygame - 例如,它不需要你打开Pygame SDL窗口,这与你想用它来捕获键盘事件不同.

import pygame.camera
pygame.camera.init()
cam = pygame.camera.Camera(pygame.camera.list_cameras()[0])
cam.start()
img = cam.get_image()
import pygame.image
pygame.image.save(img, "photo.bmp")
pygame.camera.quit()
Run Code Online (Sandbox Code Playgroud)

虽然Pygame只保存未压缩的"bmp"文件 - 你可能想把它与PIL结合起来写入其他格式.

  • 到目前为止,pygame可以保存为png,jpg,tiff和bmp.至少是我测试的那些.只需更改扩展名,pygame就会检测到它. (2认同)

Mul*_*ike 14

如果你想通过Python做到这一点,看起来你有几个选择.Pygame库具有访问摄像头的能力.

如果这不令人满意,您可以使用Python的fcntl库,使用ioctl调用直接访问Video 4 Linux 2 API.