8 jul. 2012

Captura de imágen desde la webcam con el framework SimpleCV. Parte 1.

SimpleCV es una framework para la construcción de aplicaciones de Visión por el computadort "Computer Vision", es un conjunto de librerias que permiten capturar imágenes por medio de camaras (webcam) o camaras IP para obtener información a partir de dichas imágenes.

La página del proyecto SimpleCV se puede visitar desde este enlace.

Para instalar SimpleCV se usará las herramientas de instalación de python easy_install o pip.
pip install simplecv

El ejemplo que se desarrollará es una simple aplicación que capture la imágen de la webcam, la presente en pantalla por unos segundos y la salve en un archivo con formato png.

El código es el siguiente:


#!/usr/bin/env python




#Importar los modulos Camera, Display e Image.

from SimpleCV import Camera, Display, Image

#Se importa sleep para darle unos segundos a la 

#aplicacion a que muestra la captura en pantalla.

from time import sleep

#Se crea una instancia de Camera.

#Se inicializa la camara

camara = Camera()




#Se crea una instancia de Display

#se inicializa display

pantalla = Display()




#Se captura una imagen usando la camara

imagen = camara.getImage()




#Muestra la imagen en pantalla

imagen.save(pantalla)




#Se salva la imagen en un archivo

imagen.save("captura.png")

sleep(2)

Al ejecutar el programa se muestra una pantalla con la captura que hace la webcam y la guarda en un archivo.
A continuación se muestra la imágen capturada:

10 comentarios:

Rocketlinux Red dijo...

Inetersante aplicación con Python y este framework. Cuales modificaciones se podrían agregar al código para que capture una imagen si existe algún cambio, es decir un detector de movimiento?

Rocketlinux Red dijo...

Interesante aplicación de este framework. Podría hacerse un detector de movimiento?

Rocketlinux Red dijo...

Interesante aplicación. Podría hacerse un detector de movimiento con este framework?

Ernesto Crespo dijo...

Si, de hecho visita la página de simplecv, simplecv.org y ahí encontrarás la parte de detección de objetos.

Luis Rivero dijo...

Buenas noches Ernesto, muy interesante tu publicación. Quisiera consultarte un error que me presenta al seguir tus instrucciones. Mi version de python es 2.7.3 corro en un computador con Linux mint 13 y al correr el programa obtengo el siguiente error:

Traceback (most recent call last):
File "./camaraweb.py", line 8, in
from SimpleCV import Camera, Display, Image
File "/usr/local/lib/python2.7/dist-packages/SimpleCV/__init__.py", line 3, in
from SimpleCV.base import *
File "/usr/local/lib/python2.7/dist-packages/SimpleCV/base.py", line 21, in
import pygame as pg
ImportError: No module named pygame

Agradezco de antemano toda la ayuda que puedas brindarme.

Luis Rivero dijo...

Buenas noches Ernesto luego de seguir tus indicaciones al pie de la letra y correr el código me arroja el siguiente error:

Traceback (most recent call last):
File "./camaraweb.py", line 8, in
from SimpleCV import Camera, Display, Image
File "/usr/local/lib/python2.7/dist-packages/SimpleCV/__init__.py", line 3, in
from SimpleCV.base import *
File "/usr/local/lib/python2.7/dist-packages/SimpleCV/base.py", line 21, in
import pygame as pg
ImportError: No module named pygame


mi version de Python es 2.7.3 y mi computador está instalado con Linux mint 13.

Agradezco de antemano toda la ayuda que puedas brindarme;
Un abrazo.

Ernesto Crespo dijo...

Saludos Luis.
Antes de instalar simplecv instala vía apt pygame. El error que te devuelve es que no tienes instalado pygame.
Este es el comando:
apt-get install python-pygame

Luis Rivero dijo...

Buen dia Ernesto, gracias por tu diligencia al responder mi mensaje. Realmente luego de algunos detallitos con algunos módulos ya casi corre. Digo casi correo pues al correr la camara se prende me presenta la ventana de la camara web en negro como por 3 segundos y luego se cierra presentando el siguiente error:

there is no soundcard
ERROR:
Traceback (most recent call last):
File "./camaraweb.py", line 29, in
pantalla = Display()
File "/usr/local/lib/python2.7/dist-packages/SimpleCV/Display.py", line 158, in __init__
scvLogo = SimpleCV.Image("simplecv").scale(32,32)
File "/usr/local/lib/python2.7/dist-packages/SimpleCV/ImageClass.py", line 787, in __init__
self._pil = pil.open(self.filename).convert("RGB")
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1952, in open
fp = __builtin__.open(fp, "rb")
IOError: [Errno 2] No such file or directory: '/usr/local/lib/python2.7/dist-packages/SimpleCV/sampleimages/simplecv.png'
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
File "/usr/local/lib/python2.7/dist-packages/SimpleCV/Camera.py", line 26, in run
: 'NoneType' object is not iterable

intentando solucionar cree una carpeta con permiso de escritura en /usr/local/lib/python2.7/dist-packages/SimpleCV/sampleimages más sin embargo no solucionó.

Disculpa mi ignorancia al respecto, y nuevamente agradezco toda la colaboración que puedas brindar.
Saludos.

Luis Rivero dijo...

Buenas tardes Ernesto, he estado revisando para ver si finalmente puedo poner a correr el codig y se me ha hecho algo esquivo.

Pense que mi error tenía que ver con que mi cámara tenia integrado microfono pero logré conseguir una sin microfono y da exactamente el mismo error.

Agradecería tu ayuda pues necesito incluir este pequeño módulo en un sistema de registro.

Gracias

Cristiano456 dijo...

Amigo yo trabajo OpenCV pero quisiera saber como ejecutar un promita que estoy haciendo en simplecv trabajo de ubuntu 12.04 quisiera saber si puedes orientarme soy nuevo en esto perdón por las molestias