Pygame, RaspberryPi, Webcams.
Pygame utiliza SDL para los gráficos, así que soporta directamente la consola o X windows. Es el caso en todas la plataformas (Unix, Linux, Mac, no solo en Raspbian sobre el RaspberryPi).
Si no conocen nada de Pygame, hay tutoriales en espanol aqui:
razonartificial.com
En mi caso, necesitaba código para capturar imágenes de una webcam (por un taller PyHack). con Python y Pygame, es muy sencillo. Hacer el import y init de los modulos, crear un objeto cam (de resolución 320x240), iniciar la camara, obtener una imagen (cam.get_image), y grabar como png.
import pygame
import pygame.camera # experimental
from pygame.locals import *
pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0", (320,240)) # webcam
cam.start()
image = cam.get_image()
pygame.image.save(image,'fablocker.png')
cam.stop()
El mismo código funciona en la consola o el escritorio, perfecto con los cron jobs.
Matplotlib
Hay otros módulos Python que dependen de un servidor X windows. En casos de que no se require OpenGL (no hay en Raspberry Pi) o OpenGL ES, hay un servidor basico que podemos utilizar: xvfb.
Primeramente hay que hacer la instalación de xvfb:
$ sudo apt-get install xvfb
Matplotlib es bueno para hacer imagenes y incluirles en informes de actividad de servidor, por ejemplo. Un servidor web no requiere X windows, asi que porque deberiamos utilizar LXDE o otro escritorio grafico, solo por hacer imagenes que vamos a incluir en una pagina web?
Con xvfb, no hay problemas. Un script que contiene el código Python siguiente (poner en un fichero mpl.py):
from matplotlib.pyplot import * plot([2,4,2,5,6,3,1]) savefig("graph.png")
Es lo que haria normalmente. Pero si tratamos de ejecutar el script directamente, vamos a recibir un error. A utilizar xvfb, eliminamos el error, así:
$ xvfb-run python mpl.pyVa a generar un fichero graph.png que se vera asi:
Todo de la consola, sin escritorio gráfico.
François
@f_dion
No comments:
Post a Comment