Las 10 mejores ideas y temas emocionantes de proyectos OpenCV para principiantes y experimentados [2022]

Publicado: 2021-05-27

OpenCV o Open Source Computer Vision Library es una poderosa biblioteca de aprendizaje automático y basada en IA que se utiliza para desarrollar y resolver problemas de visión por computadora. La visión por computadora incluye entrenar a una computadora para comprender y comprender el mundo visual, identificar elementos y responder a ellos utilizando modelos de aprendizaje profundo. Las empresas de hoy en día en todo el mundo lo aprovechan en la manipulación de imágenes, el procesamiento, la detección de rostros, el reconocimiento de voz, el seguimiento de movimiento y la detección de objetos.

Empresas como Google, Facebook, Microsoft e Intel ya implementan OpenCV para desarrollar aplicaciones de visión artificial. Mark Zuckerberg, en una entrevista de 2015 , comentó: "Si somos capaces de construir computadoras que puedan entender lo que hay en una imagen y decirle a una persona ciega que de otro modo no podría ver esa imagen, eso también sería bastante sorprendente".

Hoy, la tecnología OpenCV ha demostrado ser un gran avance para las personas ciegas o con problemas de visión. Les permite familiarizarse con un entorno desconocido y reconocer objetos y personas cercanas para superar esta discapacidad visual. La visión por computadora también es la tecnología detrás de los automóviles autónomos y los dispositivos inteligentes de sensores de movimiento.

Si está considerando una carrera en visión por computadora, aquí hay diez proyectos interesantes de cv abiertos para ayudarlo a obtener experiencia en el mundo real. ¡Entonces empecemos!

Tabla de contenido

Los 10 mejores proyectos de CV abierto para ver en 2022

Proyecto 1: Detección de neumonía usando EdgeML

Este proyecto de OpenCV tiene como objetivo implementar un software de detección de neumonía basado en IA en su Raspberry Pi. Utiliza el sistema Edge Machine Learning para convertir una Raspberry Pi con una cámara en un clasificador de neumonía utilizando los contenedores múltiples de Balena.

Se agrega un segundo contenedor a Balena que ejecuta el motor de inferencia Edge Impulse WebAssembly dentro de un servidor Node.js. Ambos contenedores se comunican a través de WebSockets para permitir que BalenaCam transmita en vivo cada segundo de la transmisión de su cámara en la página web.

El software y las herramientas empleadas en el proyecto incluyen OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code y Docker. Los navegadores web que admiten Balena Cam son Chrome, Safari, Firefox y Edge.

Puedes consultar el proyecto aquí .

Proyecto 2: sensor de movimiento alimentado por OpenCV para SmartThings de Samsung

Primero, necesita una Raspberry Pi 3 con una PiCam que funcione y que tenga OpenCV instalado previamente. Este proyecto tiene como objetivo crear un sensor de movimiento personalizado para SmartThings alimentado por visión artificial y detectar rostros. Los datos recopilados se envían a SmartThings a través de LAN - UPnP.

Para hacerlo, creamos un controlador de dispositivo para SmartThings y lo programamos. Luego usamos un script de Python para acceder a las imágenes de la cámara y detectar rostros y emparejar el Raspberry Pi para que SmartThings lo descubra. También necesita instalar imutils que puede obtener de GitHub.

Consulte el código fuente del proyecto aquí .

Proyecto 3: Fotografía Computacional

Este proyecto es para crear panoramas, eliminar el ruido y los objetos no deseados de las imágenes, y aumentar la visibilidad de las fotografías en las que se hace clic con poca luz. La fotografía computacional implica algoritmos de eliminación de ruido de fotos para eliminar el ruido blanco y la distorsión gaussiana, restauración de fotos para filtrar líneas, objetos y elementos no deseados, y reconocimiento de matrículas para detectar la matrícula mediante el reconocimiento de caracteres.

Proyecto 4: Cree una marca de agua en las imágenes usando OpenCV

Este proyecto es un tutorial sobre cómo puede crear una marca de agua (firma, logotipo o sello de agua para evitar el uso indebido o la violación de los derechos de autor) en una imagen utilizando la biblioteca abierta de visión artificial. Le permite agregar una marca de agua a una imagen original usando tanto la imagen como el texto usando la biblioteca OpenCV de Python. Para crear una marca de agua usando una imagen, debe definir la función transparente y la función de agregar imágenes. En el caso del texto, importamos la función PIL y luego ajustamos la posición de la marca de agua del texto.

Puedes consultar el proyecto aquí .

Proyecto 5: Buscando a Waldo

Este es un proyecto de detección de objetos para detectar a Waldo en una imagen entrenando una IA para reconocer a Waldo de una serie de imágenes diferentes. Luego empleamos un enfoque estático para encontrar a Waldo mediante la coincidencia de píxeles. Esto es importante porque si usa una imagen de plantilla, la coincidencia estática solo se aplicará a esa imagen en particular y no a una nueva imagen de Waldo.

Calculamos el coeficiente de correlación para realizar la comparación de plantillas, que toma como entrada la plantilla de Waldo y la desliza píxel por píxel por la imagen en la que se va a detectar Waldo. El coeficiente de correlación muestra si las ubicaciones de los píxeles son una coincidencia "buena" o "mala".

Puedes consultar el proyecto aquí .

Proyecto 6: Coches autónomos

Este proyecto emplea la manipulación y el procesamiento de imágenes usando OpenCV para crear autos sin conductor. Para entrenar a un automóvil para que conduzca solo, debemos familiarizarlo con los carriles de las calles, encontrarlos y concentrarnos en permanecer en ellos. Esto significa que un modelo de aprendizaje automático requiere experiencia en la identificación de la región de interés mediante la detección de bordes astutos y la transformación de las líneas Hough para separar los píxeles de una imagen que representa los carriles de la calle. Esto también requiere enmascarar y calcular los puntos de pendiente promedio.

Aquí está el código fuente para identificar la región de interés:

importar numpy como np

desde matplotlib importar pyplot como plt

imagen = cv2.imread('../../images/input.jpg')

En [8]:

imagen.forma

Fuera[8]:

(830, 1245, 3)

En [11]:

x, y = imagen.forma[:2]

En 3]:

alto, ancho = imagen.forma[:2]

# Para obtener las coordenadas de píxeles iniciales (parte superior izquierda del rectángulo de recorte)

start_row, start_col = int(alto * .25), int(ancho * .25)

# Para obtener las coordenadas de píxeles finales (abajo a la derecha)

end_row, end_col = int(alto * .75), int(ancho * .75)

# Usar la indexación para recortar la sección de la imagen que deseamos

recortada = imagen[start_row:end_row , start_col:end_col]

En [6]:

fila, columna = 1, 2

fig, axs = plt.subplots(row, col, figsize=(15, 10))

fig.tight_layout()

eje[0].imshow(cv2.cvtColor(imagen, cv2.COLOR_BGR2RGB))

axs[0].set_title('Imagen original')

cv2.imwrite('imagen_original.png', imagen)

eje[1].imshow(cv2.cvtColor(recortado, cv2.COLOR_BGR2RGB))

axs[1].set_title('Imagen recortada')

cv2.imwrite('imagen_recortada.png', recortada)

plt.mostrar()

Consulta aquí el proyecto .

Proyecto 7: Reconocimiento facial y de voz para personas con discapacidad visual

Este proyecto tiene como objetivo ayudar a las personas con discapacidad visual al convertir la entrada de rostros en salida de voz utilizando un Raspberry Pi 2 Model B y un módulo de cámara Raspberry Pi. Es uno de los proyectos de cv abierto más populares en 2022. El software permite a las personas ciegas o con discapacidad visual detectar señales, textos o personas en un entorno desconocido, navegar sin ayuda. Entre otros requisitos para el proyecto están OpenCV y Python para realizar el reconocimiento facial, y el reconocimiento de voz se logra utilizando GNU Octave.

Puedes consultar el código aquí .

Proyecto 8: Modelo de Asistencia Inteligente

Un sistema de asistencia inteligente es una herramienta útil para modelos de educación en línea como ZoomApp. Le ayuda a realizar un seguimiento de los estudiantes que asisten a su clase de Zoom al monitorear su asistencia en tiempo real. Todo lo que hay que hacer es obtener una captura de pantalla del alumno con la fecha incluida y subirla a un archivo de Excel.

Puede encontrar un tutorial para este proyecto de cv abierto aquí .

Proyecto 9: Intercambio de rostros con OpenCV

Las aplicaciones y los filtros de intercambio de rostros han sido tendencia en las redes sociales desde hace algún tiempo. Desde aparecer joven y viejo hasta convertir imágenes fijas en imágenes en movimiento, los gustos de Instagram, Snapchat y FaceApp se han subido al tren. Las aplicaciones de intercambio de caras son relativamente fáciles de crear usando OpenCV y Python.

Los pasos incluyen colocar una imagen de origen en una imagen de destino con la ayuda de un triángulo formado con el detector de puntos de referencia dlib.

Consulta aquí el proyecto .

Proyecto 10: Detección de contornos y conteo de formas

El proyecto detecta los contornos o contornos de una forma dada para determinar el tipo de forma que tiene un objeto. Por ejemplo, si una imagen tiene tapas de botellas, puede usar la forma redonda para determinar cuántas tapas de botellas hay en la imagen.

Aquí está el código fuente para hacerlo:

importar numpy como np

desde matplotlib importar pyplot como plt

En 2]:

imagen = cv2.imread('../../images/bottlecaps.jpg')

gris = cv2.cvtColor(imagen, cv2.COLOR_BGR2GRAY)

plt.imshow(cv2.cvtColor(gris, cv2.COLOR_BGR2RGB))

plt.title('tapas de botella'); plt.mostrar()

cv2.imwrite('bottlecaps_input.jpg', gris)

Salida[2]:

Cierto

En 3]:

desenfoque = cv2.medianBlur(gris, 5)

círculos = cv2.HoughCircles(desenfoque, cv2.HOUGH_GRADIENT, 1.5, 10)

para i en círculos[0,:]:

# dibujar el círculo exterior

cv2.circle(imagen,(i[0], i[1]), i[2], (255, 0, 0), 2)

# dibujar el centro del circulo

cv2.circle(imagen, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(imagen, cv2.COLOR_BGR2RGB))

plt.title('Círculos detectados'); plt.mostrar()

cv2.imwrite('círculos_detectados.jpg', imagen)

Fuera[3]:

Cierto

En [ ]:

Por otro lado, contar formas implica aplicar algoritmos para segmentar imágenes y agrupar datos para determinar puntos de interés en una imagen. Usamos contornos binarios y aproximados con la ayuda de la función approxPolyDP.

Puedes consultar este proyecto de cv abierto aquí .

Pensamientos finales

Computer Vision le permite desarrollar una amplia gama de aplicaciones útiles como transformación de imágenes, traducción, detección de contornos, segmentación de imágenes, detección de objetos, seguimiento de objetos y análisis de movimiento.

También se utiliza en Realidad Aumentada (AR) aprendiendo a localizar rostros, detectar formas, etc., para reconocer objetos y rostros. También puede crear proyectos interesantes de Open CV utilizando aprendizaje automático simple, como un lector de tarjetas de crédito, un detector de dígitos escritos a mano o un lector de rostros.

Sin embargo, esto requiere una comprensión de la ciencia de datos y el aprendizaje automático, especialmente el aprendizaje profundo. Si está buscando seguir una carrera como ingeniero de ML, científico de datos o ingeniero de aprendizaje profundo, le recomendamos adquirir un programa de certificado avanzado en aprendizaje automático y aprendizaje profundo .

Este curso lo ayudará a familiarizarse con los conceptos de estadística, regresión, algoritmos de agrupamiento, redes neuronales, detección de objetos y reconocimiento de gestos. No solo eso, lo ayudará a desarrollar experiencia en OpenCV, Python, TensorFlow, MySQL, Keras, Excel y NumPy, entre otras herramientas y bibliotecas de programación, y lo ayudará a destacarse entre la multitud.

¿Qué es OpenCV?

OpenCV es una biblioteca de código abierto para procesamiento de imágenes y visión por computadora, mantenida por Intel y ahora respaldada por una comunidad de desarrolladores. Al ser de código abierto, OpenCV hace uso del poder de toda la comunidad de desarrolladores. La biblioteca está diseñada para optimizarse para aplicaciones en tiempo real, como reconocimiento de objetos, videovigilancia, interacción hombre-máquina, medicina y otros campos relacionados.

¿Qué es la detección de objetos?

La detección de objetos es el proceso de localizar objetos en imágenes o videos que no son trivialmente fáciles de detectar. Este problema suele formularse como una instancia de clasificación. Dada una imagen, queremos clasificar sus diversos objetos (como automóviles, peatones y edificios) junto con sus cuadros delimitadores que, a su vez, nos darían su ubicación. La detección de objetos es la tarea de identificar objetos en una imagen. El objetivo de la detección de objetos es encontrar la ubicación de los objetos en una imagen (es decir, ubicarlos) y estimar su tamaño y forma. La detección de objetos es un problema desafiante porque los objetos a menudo están parcialmente ocluidos y, a veces, tienen una enorme variedad de apariencias, así como deformaciones no rígidas en la imagen.

¿Cuál es el algoritmo de detección de objetos más preciso?

Hay muchos algoritmos de detección de objetos y ninguno de ellos es 100% preciso. Los algoritmos de detección de objetos enfrentan un problema de sobreajuste de datos. De hecho, algunos investigadores de visión por computadora afirman que los algoritmos de detección de objetos no pueden ser 100% precisos. Pero hay muchos algoritmos que brindan resultados precisos para un conjunto de datos determinado. Si puede pagar una máquina con GPU, le sugerimos que utilice la implementación de SVM basada en OpenCV para la detección de objetos. Es muy preciso, rápido y funciona en conjuntos de datos muy grandes. Sin embargo, no maneja muy bien la oclusión. Si desea construir un detector de rostros, vaya a la implementación del clasificador en cascada de Haar en OpenCV.