【问题标题】:How to programmatically capture a webcam photo如何以编程方式捕获网络摄像头照片
【发布时间】:2012-03-31 12:02:12
【问题描述】:

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

我可以启动像 Cheese 这样的简单应用程序,但我没有找到一种简单的方法来立即检测或检索它拍摄的照片。我也可以直接通过 OpenCV 访问和录制网络摄像头流,但我必须重新设计 GUI 才能与用户交流。

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

【问题讨论】:

标签: python video ubuntu webcam


【解决方案1】:

我喜欢为此使用 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()

虽然 Pygame 只会保存未压缩的“bmp”文件 - 您可能希望将其与 PIL 结合以写入其他格式。

【讨论】:

  • 至此,pygame 可以保存为 png、jpg、tiff 和 bmp。至少 tose 是我测试过的。只需更改扩展名,pygame 就会检测到它。
  • pygame.camera.quit() 不起作用;改用 cam.stop()。
【解决方案2】:

如果您想通过 Python 执行此操作,看起来您有几个选择。 The Pygame library has the ability to access cameras

如果这不令人满意,您可以转到更低的级别并使用Python's fcntl library 直接使用ioctl 调用访问Video 4 Linux 2 API

【讨论】:

  • Pygame 库的链接现在是错误的。在服务器上找不到请求的 URL /docs/tut/camera/CameraIntro.html。
猜你喜欢
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多