Как программно сделать снимок с веб-камеры
Какой самый простой способ в Ubuntu 11.10 программно направить (из Bash или Python) пользователя, чтобы сделать снимок своей веб-камеры?
Я могу запустить простое приложение, такое как Cheese, но я не вижу простого способа немедленно обнаружить или получить фотографию, которую он захватил. Я также могу получить доступ и записывать поток веб-камеры напрямую через OpenCV, но мне придется заново изобретать графический интерфейс для связи с пользователем.
Есть ли какой-нибудь сценарий, который является удачной средой, где я могу его запустить, и он выводит на стандартный вывод имя файла изображения, которое сделал пользователь?
2 ответа
Если вы хотите сделать это через Python, похоже, у вас есть несколько вариантов. Библиотека Pygame имеет возможность доступа к камерам.
Если это неудовлетворительно, вы можете перейти на более низкий уровень и получить доступ к Video 4 Linux 2 API напрямую, используя вызовы ioctl, используя библиотеку Python fcntl.
Мне нравится использовать 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 для записи в другие форматы.