Как программно сделать снимок с веб-камеры - PullRequest
19 голосов
/ 15 марта 2012

Какой самый простой способ в Ubuntu 11.10 программно направить (из Bash или Python) пользователя, чтобы сделать снимок своей веб-камеры?

Я могу запустить простое приложение, такое как Cheese, но я не вижу простого способа немедленно обнаружить или получить фотографию, которую он захватил. Я также могу получить доступ и записывать поток веб-камеры напрямую через OpenCV, но мне придется заново изобретать графический интерфейс для взаимодействия с пользователем.

Есть ли какой-нибудь сценарий, который является удачной средой, где я могу его запустить, и он выводит на стандартный вывод имя файла изображения, которое сделал пользователь?

Ответы [ 2 ]

38 голосов
/ 15 марта 2012

Мне нравится использовать 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 для записи в другие форматы.

14 голосов
/ 15 марта 2012

Если вы хотите сделать это через Python, похоже, у вас есть несколько вариантов. Библиотека Pygame имеет возможность доступа к камерам .

Если это неудовлетворительно, вы можете перейти на гораздо более низкий уровень и получить доступ к Video 4 Linux 2 API напрямую, используя вызовы ioctl, используя Библиотека Python fcntl .

...