Usando SimpleCV en la RaspberryPi

Un equipo muy interesante para usar en la RaspberryPi es una cámara.

El soporte de cámaras en Linux es un tema muy amplio. Nosotros hemos probado con éxito  el modelo Logitech C910.

Mostramos algunas cosas que se pueden hacer con SimpleCV y la Raspberry Pi.

Todo es realizado desde la línea de comandos sin necesidad de desplegar la imagen inmediatamante,

 

 

 

Materiales

  • Cámara. Usamos una Logitech C910
  • Raspberry Pi con linux Occidentalis
  • Fuente de poder 5V @ 2A
  • Acceso a Inet

Instalando Software

Se debe instalar SimpleCV con los siguientes comandos (obtenidos desde este link)

sudo apt-get install ipython python-opencv python-scipy python-numpy python-setuptools python-pip
sudo pip install https://github.com/sightmachine/SimpleCV/zipball/master

Luego creamos la carpeta images con el siguiente comando

mkdir images

 

Codificando en Python

A continuación mostramos algunos ejemplos sobre uso de SimpleCV. Como se indicó anteriormente estas pruebas se realizan desde la línea de comandos sin necesidad de acceder al escritorio.

Foto única. El código Python usado es el siguiente

# Author : Manuel Carrasco
# 
# Site   : www.iot.cl
# Date   : 13/05/2013
# Adapted from Practical Computer Vision p13
#

from SimpleCV import Camera, Image
import time

cam = Camera(prop_set={"width":320, "height":240})
# Snap a Picture
img = cam.getImage()

# Save picture
img.save("images/foto.jpg")

Secuencia de fotos 1. Si se requiere obtener una secuencia de fotos podemos usar la opción de setimages de la siguiente manera

# Author : Manuel Carrasco
# 
# Site   : www.iot.cl
# Date   : 13/05/2013
# Adapted from Practical Computer Vision p34
#

from SimpleCV import Camera,ImageSet
import time

cam = Camera(prop_set={"width":320, "height":240})

camImages = ImageSet()

#Set maximum of 3
maxImages = 3

for counter in range (maxImages):
        img = cam.getImage()

        camImages.append(img)
        time.sleep(4)

camImages.save("images/")

Secuencia de fotos 2. Otra opción para la secuencia de fotos es hacer una iteración con un ciclo for. Agregamos la posibilidad de indicar la cantidad de fotos que se requiere.

from SimpleCV import Camera, Image
import time

cam = Camera(prop_set={"width":320, "height":240})

p = int(raw_input("Ingrese  numero de fotos: "))

for x in range(1, p+1):

        # Snap a Picture
        img = cam.getImage()
        time.sleep(4)
        # Save picture
        img.save("images/ftest" + str(x) + ".jpg")

Pruebas varias.Hay muchas cosas que se pueden hacer con SimpleCV y aquí solo mostramos un ejemplo más


from SimpleCV import Image
import time

img = Image('lenna')
binlena = img.binarize()
binlena.save("images/binlena.jpg")

time.sleep(3)

edgelena = img.edges()
edgelena.save("images/edgelena.jpg")

Al revisar las imagenes obtenidas vemos lo siguiente

simplecv_example

Bibliografía

Practical computer vision using SimpleCV
Uso de SimpleCV en RPi

Author: Manuel Carrasco

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

3 thoughts

  1. Hola! Muy interesante tu tutorial! Apenas estoy haciendo mis primeros pasos con SimpleCV y la Raspberry Pi. Se puede hacer un programa que no se ejecute línea por línea? Me refiero a que, sí se puede crear un programa en simpleCV que tome varias fotos y que cada una de ellas, las procese, una por una y analice algunas cosas? Que se termine sólo cuando el usuario se lo indique o hasta cierto tiempo? Espero me puedas resolver esta duda

    1. Hola Oscar:

      Como en todo programa hay más de un modo para hacer lo que dices. Por ejemplo

      1) realizar el procesamiento e incluir timer con sleep(t segundos) todo esto desde un ciclo for, para tener una cantidad conocida de ciclos que realizar.
      2) Agregar funciones que implementen lo que necesitas y realizas las acciones tras cada llamada a la función.

      Si quieres detalles sobre que es posible (y que no) te recomiendo el libro «Practical Computer Vision with SimpleCV» disponible en Amazon como e-book y físico.

      Saludos

      Manuel Carrasco
      Co-founder
      http://www.iot.cl

  2. hola amigo muy buen post. Estamos realizando un proyecto escolar en el cual usamos una raspberry pi y una cámara web y lo que necesitamos es que la cámara reconozca objetos de color rojo, somos nuevos en esto y te agradeceríamos un poco de ayuda. Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *