web-dev-qa-db-fra.com

Comment capturer par programme une photo webcam

Quelle est la manière la plus simple dans Ubuntu 11.10 de guider par programmation (depuis Bash ou Python) l'utilisateur pour capturer une photo webcam de lui-même?

Je peux lancer une application simple comme Cheese, mais je ne vois pas de moyen facile de détecter ou de récupérer immédiatement la photo qu'elle capture. Je peux également accéder et enregistrer le flux de webcam directement via OpenCV, mais je devrais réinventer l'interface graphique pour communiquer avec l'utilisateur.

Existe-t-il un type de script qui soit un moyen de communication efficace, où je peux le lancer et qui imprime sur stdout le nom de fichier de l'image prise par l'utilisateur?

19
Cerin

Si vous souhaitez le faire via Python, il semble que vous ayez quelques options. La bibliothèque Pygame a la possibilité d'accéder aux caméras .

Si cela n'est pas satisfaisant, vous pouvez aller à un niveau beaucoup plus bas et accéder à Video 4 Linux 2 API directement en utilisant des appels ioctl en utilisant bibliothèque fcntl de Python .

14
Multimedia Mike

J'aime utiliser pygame pour cela - cela ne vous oblige pas à ouvrir une fenêtre Pygame SDL, contrairement à quand vous voulez l'utiliser pour capturer des événements de clavier, par exemple.

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()

Bien que Pygame n'enregistre que les fichiers "bmp" non compressés - vous pouvez le combiner avec PIL pour écrire dans d'autres formats.

38
jsbueno