Tabla de contenido:

Detección de color simple usando OpenCV: 6 pasos
Detección de color simple usando OpenCV: 6 pasos

Video: Detección de color simple usando OpenCV: 6 pasos

Video: Detección de color simple usando OpenCV: 6 pasos
Video: DETECCION DE COLORES EN TIEMPO REAL Con Python y OpenCV | Detección de Frutas por su Color en Python 2024, Junio
Anonim
Detección de color simple usando OpenCV
Detección de color simple usando OpenCV

¡Hola! Hoy voy a mostrar un método simple para detectar un color de un video en vivo usando OpenCV y Python.

Básicamente, solo probaré si el color requerido está presente en el marco de fondo o no y, utilizando módulos OpenCV, enmascararé esa región y mostraré simultáneamente el marco.

Paso 1: los archivos de encabezado

Los archivos de encabezado
Los archivos de encabezado

Ahora aquí he usado dos archivos de encabezado, a saber, cv2 y NumPy. Básicamente, cv2 es la biblioteca OpenCV que carga todos los archivos c ++ que son importantes mientras se usan los comandos en los códigos (contiene todas las definiciones).

Y Numpy es una biblioteca de Python que es esencial para almacenar una matriz multidimensional. Usaremos para almacenar las coordenadas de nuestra gama de colores.

Y numpy as np básicamente ayuda a que nuestro código se acorte un poco al usar np cada vez en lugar de numpy.

Paso 2: captura del video

Capturando el video
Capturando el video

Esto es bastante simple al usar Python. Aquí solo tenemos que encender la grabadora de video para que pueda comenzar a grabar los fotogramas.

Ahora el valor dentro de VideoCapture indica la cámara, en mi caso la cámara está conectada a mi computadora portátil, entonces 0.

Puede ir de manera similar a 1 para la cámara secundaria y así sucesivamente. VideoCapture crea el objeto para él.

Paso 3: capturar el marco y definir el color

Captura de fotogramas y definición de color
Captura de fotogramas y definición de color

Ahora aquí tenemos que hacer algo para que podamos capturar el fotograma instantáneo del video que nos ayudará a extraer la imagen y podemos trabajar en eso según los requisitos.

El ciclo "while" nos ayudará a ejecutar el ciclo según nuestro tiempo requerido. Ahora se utiliza "_, frame = cap.read ()" para comprobar la validez del Frame capturado y lo almacena. "cap.read () es una variable booleana y devuelve verdadero si el marco se lee correctamente y si no obtiene marcos, no mostrará ningún error, simplemente obtendrá Ninguno.

Ahora la línea 11 y la línea 12 definen básicamente el rango de color que necesitamos detectar. Para ello, me he acostumbrado al color azul.

Puede continuar con cualquier color para lo que necesita simplemente escribir los valores de BGR para ese color en particular. Es mejor definir dos matrices usando matrices numpy, ya que la detección de un color particular en el mundo real no servirá para nuestro propósito, sino que definiremos un rango de color azul para que detecte dentro del rango.

Para esto, he definido dos variables que almacenan los valores BGR inferiores y los valores BGR superiores.

Paso 4: enmascaramiento y extracción

Enmascaramiento y extracción
Enmascaramiento y extracción

Ahora aquí viene la tarea principal de enmascarar el marco y extraer el color del marco. Usé los comandos predefinidos presentes en la biblioteca en OpenCV para hacer el enmascaramiento. Básicamente, el enmascaramiento es el proceso de eliminar una parte del marco, es decir, eliminaremos los píxeles cuyos valores de BGR de color no se encuentran en el rango de color definido y esto se realiza mediante cv2.inRange. Luego, aplicamos el rango de color a la imagen enmascarada dependiendo de los valores de los píxeles y para esto, usaremos cv2.bitwise_and, simplemente asignará los colores a la región enmascarada dependiendo de la máscara y los valores del rango de color.

Enlace para cv2. bitwise_and:

Paso 5: ¡Finalmente se muestra

¡Finalmente exhibiendo!
¡Finalmente exhibiendo!

Aquí he usado el cv2.imshow () básico para mostrar cada cuadro como una imagen. Como tengo los datos del marco almacenados en variables, puedo recuperarlos en imshow (). Aquí he mostrado los tres fotogramas, original, enmascarado y coloreado.

Ahora tenemos que salir del ciclo while. Para esto, simplemente podemos implementar cv2.wait. Key (). Básicamente, indica el tiempo de espera antes de responder. Entonces, si pasa 0, esperará infinitamente y 0xFF le indicará que la arquitectura es de 64 bits. "ord ()" especifica el carácter que cuando se presiona ejecutará el comando break en el bloque if y saldrá del bucle.

Luego, cap.release () cierra la grabadora de video y cv2.destroyAllWindows () cierra todas las ventanas abiertas.

Si tiene algún problema, hágamelo saber.

Enlace al código fuente:

Recomendado: