viernes, 21 de noviembre de 2014

OpenCV y Python I (Instalación y ejemplo)

El contenido de este blog normalmente gira entorno a la idea de realizar un proyecto robótico, algo que he buscado desde que de pequeñito vi la peli de Cortocircuito, es una de esas cosas que forman parte de la lista de "Cosas que debo hacer antes de morir"


Y claro, mi hipotético futuro superrobot tiene que ver y entender según que cosas, como llamarme papá al verme... ahí es cuando entra OpenCV, una librería de visión artificial que empezaremos a utilizar con estos tutoriales.

En este post, aprenderemos a instalarla en Python y dejarla lista para usar, y ya de paso cargaremos un ejemplo de los que lleva para comprobar que funciona.




Las descargas:


La instalación:
  1. Instalamos Python, y las librerias Numpy y Matplotlib. 
  2. Instalamos OpenCV
  3. Entramos en la carpeta C:\opencv24\build\python\2.7\x86
  4. Copiamos cv2.pyd en la carpeta C:\Python27\Lib\site-packages

Comprobación:

En la ventana de comandos de Python insertamos
>>> import cv2

Si no da ningún error, ya lo tenemos instalado.

El ejemplo:

import numpy as np
import cv2

# Creamos una variable de camara y asigamos la primera camara disponible con "0"
cap = cv2.VideoCapture(0)

# Iniciamos el bucle de captura, en el que leemos cada frame de la captura
while(True):
    ret, frame = cap.read()
    cv2.imshow('Camara', frame) #Con esto creamos una ventana en la que mostramos las capturas
    if cv2.waitKey(1) & 0xFF == ord('q'): # Indicamos que al pulsar "q" el programa se cierre
        break

cap.release()
cv2.destroyAllWindows()







Conclusiones:

Bien, hemos instalado OpenCv y Python, hemos capturado la cámara y visto en pantalla, antes de seguir tenemos que entender como funciona OpenCv y en general el proceso de visión artificial.

  • Lo primero capturar la imagen, algo obvio para poder analizarla.
  • Procesar la imagen para eliminar los datos que no necesitamos y mejorar tanto la detección como la velocidad de trabajo.
  • OpenCv tiene diferentes herramientas para detección de imágenes, y debemos encontrar las que mejor nos funcionen para lo que nosotros queremos.
    Por ejemplo, si queremos detectar un objeto azul en un fondo que contraste lo suficiente, lo que deberíamos hacer es filtrar la imagen para eliminar todos los colores menos el azul, de esta forma OpenCV tendría como referencia una imagen de este estilo (Insertar una imagen). Si por el contrario, debemos detectar una cara, en un fondo beige, esta bastante claro que no tenemos suficiente contraste para utilizar esta técnica, y utilizaremos el HaarCascade, del que ya hablaremos.
  • Una vez detectada la imagen, ya lo tenemos todo, las posibilidades son enormes.
Creo que el conocer el funcionamiento es básico para aprender sobre esta librería a pasos agigantados, de otra forma te pasas mucho tiempo siguiendo tutoriales sobre como OpenCV muestra una ventana, carga una imagen, la guarda, la pone en blanco y negro, la muestra otra vez, cambia el formato a HSV, la muestra de nuevo, le pone un lacito y finalmente te aburres y lo dejas ( me pasó...)


No hay comentarios:

Publicar un comentario