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?…
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 <https://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
Te falta el repositorio, gracias por compartir.
mira en https://www.ubuntuupdates.org/pm/python3-v4l2capture
que están por versión.
con v no b:
python3-v4l2capture
Corregido gracias
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