Como hacer una foto con la webcam de forma programada en Ubuntu

Continuando con el artículo que escribí hace unos días sobre xbacklight y backlight-indicator, hoy le toca a como hacer una foto con la webcam.

El funcionamiento de backlight-indicator es muy sencillo. Esta aplicación hace una foto con la webcam y la procesa para calcular el brillo. Una vez calculado el brillo lo configura para tu pantalla.

Ahora bien, ¿Cómo podemos hacer una foto con la webcam?…

Como hacer de forma programada una foto con la webcam en Ubuntu

Hacer una foto con la webcam

Hasta la fecha, en backlight-indicator utilizaba GStreamer, para tomar una foto con la webcam. Esto tenía un problema, y es que necesitaba guardar la imagen en el disco duro para luego procesarla.

Hace poco, me topé con python-v4l2capture, un proyecto en GitHub que se dedicaba única y exclusivamente a esto. Es decir, a capturar vídeo con video4linux2, una API de captura de vídeo en Linux.

El uso y funcionamiento es muy sencillo, y permite integrarlo fácilmente con cualquier aplicación en Python. Y aquí es donde puedes sacarle un importante partido…

Automatización de fotografías

Un uso muy interesante de esta sencilla utilidad es el de una foto con la webcam… (evidentemente), pero esto lo puedes automatizar por ejemplo para que se tome una foto cada vez que se inicie una sesión en tu equipo, de forma que puedes rastrear quien lo utiliza. Es decir, tendrías claras pruebas…

Vamos a ello…

Primero realizaremos un sencillo script en Python, que puedes descargar desde la propia página de GitHub, captura una foto

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from PIL import Image
import select
import time
import datetime
import v4l2capture

video = v4l2capture.Video_device("/dev/video0")
size_x, size_y = video.set_format(1280, 1024)
video.create_buffers(1)
video.start()
time.sleep(2)
video.queue_all_buffers()
select.select((video,), (), ())
image_data = video.read()
video.close()
image = Image.frombytes("RGB", (size_x, size_y), image_data)
image.save('/tmp/{0}.jpg'.format(
    datetime.datetime.now().strftime('%Y%m%dT%H%M%S')))

Lo primero es darle permisos de ejecución. Para ello, ejecutaremos la siguiente orden,

chmod +x take_photo.py

Luego lo pondremos en el algún sitio accesible, por ejemplo,

cp take_photo.py /usr/local/bin

Ahora vamos a realizar un sencillo lanzador que colocaremos en el lugar adecuado, de forma que cada vez que alguien inicie nuestro equipo, realice la captura con la webcam. Para ello crearemos el siguiente lanzador ~/.config/autostart/takephoto.desktop,

    [Desktop Entry]
    Type=Application
    Exec=/usr/local/bin/take_photo.py
    Hidden=true
    NoDisplay=true
    X-GNOME-Autostart-enabled=true
    X-GNOME-Autostart-Delay=2

De esta manera, cada vez que se inicie tue equipo y transcurridos 2 segundos se realizará una captura de pantalla… guardando una prueba de quien estaba utilizando el equipo. Evidentemente, puedes modificar el momento en el que se realiza la captura

La imagen la guarda en /tmp con el formato YYYMMDDThhmmss.jpg

Otras interesantes utilidades

Además de esto, puedes darle mas utilidades a esta aplicación. Por ejemplo si tienes una segunda webcam y quieres que tome una imagen cada cierto tiempo, o cualquier otra idea similar. Son utilidades muy sencillas pero que pueden ahorrarte mucho trabajo.

Instalación

Antes de poder utilizar esta aplicación, necesitaremos instalar la biblioteca que nos da acceso a su uso. Esta biblioteca no se encuentra en los repositorios oficiales de Ubuntu, pero la puedes instalar fácilmente ejecutando las siguientes órdenes en un terminal,

sudo add-apt-repository atareao/atareao
sudo apt update
sudo apt install python3-v4l2capture
  • Live Livez

    Te falta el repositorio, gracias por compartir.

  • Jose Luis

    Hola compañero: tengo una lupa electronica por USB, le llaman microscopio, y hay para otros S.O. software que te permite tomar fotos y video con él. Con Cheese lo ha probado y solo las toma en una calidad de 640×480 cuando el otro software te permite hacerlo en mayor calidad.

    Si supieses si hay algun soft para esto, te lo agradecería

    • Hola José Luis,

      Si sabes algo de programación, con esta utilidad que indico en el artículo puedes realizar tus propias capturas. Si no sabes nada de programación, te puedo orientar para ver si podemos resolver el problema.

      En cuanto a otras aplicaciones, puedes utilizar para el terminal fswebcam:

      fswebcam -r 900×1200 –jpeg 85 -D 2 web-cam-shot.jpg