Ok, estoy en medio de la redacción de la serie de artículos intentando dar una visión para aprendices (básica y funcional, sobre todo) de Open CV en Python, y una de las cosas que quiero explicar en ella es la posibilidad de trabajar con librerías haarcascade que pueden detectar e incluso reconocer rasgos faciales. Como eso puede alargarse en el tiempo, y yo ahora mismo tengo que recoger a mis chiquillas del cole, no quiero dejar pasar la oportunidad de mostraros el código que podéis implementar para hacer esta tontuna:
Read more: Open CV y detección inteligente de caras: aplicación de tipo lúdico.
Aún estoy con la serie de artículos dedicada a Open CV en Python y Arduino orientados a la robótica, pero no me resisto a compartir con vosotros esta maravilla: utilizo un filtro de luminosidad en la imagen capturada por la webcam que me filtra el color blanco de la pared y análogos, por donde se cuela parte de la imagen estática con el logo de mi instituto. ¡Me encanta!.
¡Saludos, estudiantes!. Continuando con nuestro (somerísimo) repaso de las posibilidades de Open CV en Robótica, hoy quiero hablaros de las transformaciones y de las máscaras. Así, en general. A lo loco. Como si supiéramos de algo.
Y es que éste es un mundo muy, muy complejo, que implica el trabajo con Matemáticas de alto nivel. Y esta humilde web es de un aprendiz para aprendices. Yo os voy explicando lo que voy descubriendo, y qué conclusiones saco, pero eso no quiere decir que tenga necesariamente razón. Así que es mi deber avisarte que todo lo que estás viendo en esta serie de artículos es siempre una aproximación (en muchos casos, hasta grosera) a las poderosas posibilidades que ofrece esta librería.
Pero dejémonos de monsergas: hoy quiero hablarte de filtros y máscaras. Para ello, es necesaria una primera explicación: Open CV es una herramienta matemática que trata a las imágenes como matrices de píxeles. Permite que utilice una imagen para ilustrarte:
Read more: Robótica y Open CV: Brazo robótico que me hace la cobra (II)
Bueno, pues si has leído con atención el capítulo anterior, ya estás preparado para comprender algunas particularidades de OpenCV desde la óptica de Python:
Conceptos básicos de OpenCV
Si analizamos brevemente el código del artículo anterior, podréis notar que trabajamos en cinco fases:
- En un primer lugar, importamos las librerías necesarias: opencv y numpy (necesaria para opencv, ya que realiza múltiples operaciones matemáticas con las imágenes que se van procesando). Por otro lado, creamos un objeto denominado cap al que asociaremos la webcam que tenemos conectada (0 por defecto; si tuvieras varias, deberías utilizar múltiples números):
import numpy as np import cv2 cap = cv2.VideoCapture(0)
- A continuación, iniciamos un bucle mediante la instrucción while(True) que sólo se romperá si pulsamos la tecla 'q':
while(True):
#Operacion 1
#Operacion 2
#etc...
#el procedimiento waitKey comprueba si se ha pulsado la tecla 'q' al final de cada bucle
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Si se ha roto el bucle, procedemos a destruir la ventana y finalizar el programa
cap.release()
cv2.destroyAllWindows()
- Aquí empieza la auténtica parte de tratamiento de vídeo: por un lado, creamos dos objetos denominados ret y frame que irán registrando las imágenes que componen nuestro vídeo mediante el procedimiento read() en el objeto cap. Por otro, creamos un objeto marco a partir de frame al que asignamos un modo de tratamiento de color (existen decenas, a cada uno le corresponde un flag, y no los controlo todos; en este caso creo que se limita a dejar el modo RGB para la cámara):
#Dos objetos irán grabando las imágenes del objeto cap
ret,frame = cap.read()
# Especificamos el tipo de color (existen decenas) que queremos mostrar de la captura de frame y lo asignamos a un objeto que llamamos marco
marco = cv2.cvtColor(frame, cv2.COLOR_RGB2RGBA)
- Por último, sólo nos queda mostrar por una ventana a la que hemos puesto por nombre "Hola Mundo" dicho objeto marco mediante el procedimiento imshow():
cv2.imshow('Hola Mundo',marco)
Read more: Robótica y Open CV: Brazo robótico que me hace la cobra (I)
¡Buenas!. En esta ocasión, vamos a hacer una aproximación, MUY, MUY, MUY SUPERFICIAL a Open CV, una librería sobre visión computerizada inteligente que me tiene enamorado desde que me acerqué a ella por primera vez.
Open CV es software libre (Open Source Computer Vision), y dispone de interfaces para utilizarlo en lenguajes C, C++, Java y Python (este último es el que vamos a utilizar nosotros).
Este software está enfocado al tratamiento inteligente de imagen y de video, y según su página de referencia (http://opencv.org) está fuertemente enfocado a aplicaciones en tiempo real, es decir, está optimizado para un funcionamiento eficiente y rápido, sin requerir apenas tiempo de computación de datos (signifique eso lo que signifique)
Read more: Robótica y Open CV: Brazo robótico que me hace la cobra (Introducción)