jueves, 1 de octubre de 2015

Captura componentes RGB - Gris mediante Python y PIL 


Autor: José Medina.
Competencia: Creatividad e innovación.
Asignatura: Programación para la Integración de Sistemas.

Descripción de la actividad:

Se presentara a continuación una pequeña pero potente actividad en donde programaremos un pequeño script en python en donde se capturara video en tiempo real y muestre sus componentes RGB (Rojo, Verde, Azul) y Gris en una interfaz de 2 x 2. La idea principal es demostrar el uso y la creatividad del programador para usar python y PIL de modo conjunto.

Antes de comenzar hablaremos un poco sobre que es python y PIL

Python

Python-logo-notext.svgPython puede ser utilizado en diversas plataformas y sistemas operativos, entre los que podemos destacar los más populares, cómo Windows, Mac OS X y Linux. Pero, además, Python también puede funcionar en smartphones, Nokia desarrolló un intérprete de esté lenguaje para su sistema operativo Symbian.

¿Tiene Python un ámbito específico? Python permite desarrollar software para aplicaciones científicas, para comunicaciones de red, para aplicaciones de escritorio con interfaz gráfica de usuario (GUI), para crear juegos, para smartphones y por su puesto, para aplicaciones web.

Python es Open Source, cualquiera puede contribuir a su desarrollo y divulgación. Además, no es necesario pagar ninguna licencia para distribuir software desarrollado con esté lenguaje. Hasta su intérprete se distribuye de forma gratuita para diferentes plataformas. 

PIL

Python Image Lybrary también conocido como PIL es una biblioteca open source para la edición de imágenes mediante el uso del lenguaje de programación python en diferentes tipos de archivos de imagen como PPM, PNG, JPEG, GIF, TIFF y BMP. PIL se encuentra disponible para Windows, Mac OS X y Linux siendo su lanzada su ultima version en septiembre del 2009.

PIL ofrece varios procedimientos estándar para la edición de imágenes entre ellos vale destacar:

  • Manipulaciones por pixel
  • Enmascaramiento y manipulación de transparencia.
  • Mejoras como nitidez, ajustes de brillo, contraste o color
  • Re-dimensionado de imágenes y creación de miniaturas.
  • Muchas otras funciones.



Actividad

Como ya se menciono la actividad consiste en combinar python y pygame para realizar la captura de vídeo en tiempo real y filtrar sus componentes RGB y Gris.


Código:


import pygame.camera
from pygame.locals import *
from PIL import Image,ImageOps

OK = 1
pygame.init()


#--- Inicializar y listar camara  ---
pygame.camera.init()
cl = pygame.camera.list_cameras()

#--- Mostrar camara en tamaño 320 x 240  ---
cam = pygame.camera.Camera(cl[0],(320,240))
print "Utilizando camara %s ..." % cl[0] cam.start() sc = pygame.display.set_mode((640,480)) while OK:

#--- Capturar imagen con la camara y guardarla  ---
r = cam.get_image()
pygame.image.save(r,"gris.png")

#--- Cargar Imagen  ---
im = Image.open("gris.png")#ifs)

#--- Salida Gris  ---
 gray=im.convert("L") 
 grays=gray.convert("RGB").tostring("raw","RGB")
 grs=pygame.image.fromstring(grays,(320,240),"RGB")

#--- Salida Roja  ---
 red=ImageOps.colorize(gray,'red','white')
 reds=red.convert("RGB").tostring("raw","RGB")
 rs=pygame.image.fromstring(reds,(320,240),"RGB")

#--- Salida Verde  ---
 green=ImageOps.colorize(gray,'green','WHITE')
 greens=green.convert("RGB").tostring("raw","RGB")
 gs=pygame.image.fromstring(greens,(320,240),"RGB")
 
#--- Salida Azul  ---
 blue=ImageOps.colorize(gray,'blue','WHITE')
 blues=blue.convert("RGB").tostring("raw","RGB")
 bs=pygame.image.fromstring(blues,(320,240),"RGB")

#--- Mostrar Imagen Modificada  --- 
sc.blit(rs,(0,0)) sc.blit(gs,(325,0)) sc.blit(bs,(0,240)) sc.blit(grs,(325,240))

#--- Gestionar cierre ventana  ---
ev = pygame.event.get() for e in ev: if e.type == QUIT or (e.type == KEYDOWN and e.key == K_ESCAPE): cam.stop() OK = 0 pygame.display.flip()
 
 
 
 
 


Reflexión: 

La anterior actividad permite comprender como funciona PIL y pygame mostrando sus funciones para la gestión y manipulación de imágenes en python dándonos un pequeño vistazo de lo potente que pueden ser estas herramientas combinadas y las muchas cosas que podemos lograr gracias a la librería PIL.  




No hay comentarios:

Publicar un comentario