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