Visión de la computadora lo básico

Visión de la computadora lo básico
OpenCV (Open Source Computy Vision Library) es un módulo Python utilizado para la visión por computadora. OpenCV es un módulo de código abierto gratuito que contiene cientos de algoritmos para realizar varias tareas. Cualquier cosa, desde el reconocimiento facial hasta la detección de movimiento, se puede hacer utilizando OpenCV. Sin embargo, en esta guía, veremos los conceptos básicos de OpenCV.

Primero, instalemos OpenCV:

PIP3 Instalar OpenCV-Python

Leer y mostrar imágenes

Lo primero que debemos aprender es leer y escribir imágenes. Leer un archivo de imagen, ingresar la ruta completa al archivo o al nombre del archivo (si el archivo está en la carpeta de Python), y agregar un indicador se realiza con CV2.Estoy leído(). La bandera puede tomar el valor de 1 (para una imagen en color), 0 (para escala de grises) o -1 (para imagen de color con canales). Uno puede usar el CV2.función imshow () para mostrar la imagen; Aquí, se pasan dos argumentos: un nombre para la imagen y la imagen a mostrar. A continuación, usamos el CV2.Función WaitKey () para esperar una entrada del teclado; A 0 para el CV2.La función de WaitKey (0) implica un tiempo de espera permanente. Por otro lado, el CV2.La función DestryallWindows () cerrará las ventanas.

Esto leerá y abrirá una imagen, y mantendrá la imagen abierta hasta que la cierre:

Importar CV2
Imagen = CV2.Imread ('Linuxlogo.jpg ', 1)
CV2.imshow ('imagen', imagen)
CV2.Waitkey (0)
CV2.DestroyallWindows ()

Escribir imágenes

Usamos el CV2.función imwrite () para guardar una imagen. Esta función toma dos parámetros: un nombre para guardar la imagen y la imagen que desea guardar.

Importar CV2
Imagen = CV2.Imread ('identificar.jpg ', -1)
CV2.imwrite ('save_image.png ', imagen)

Captura de video de la cámara web

Para capturar videos, comenzamos inicializando el CV2.Función Videocapture (). Luego usamos un bucle "while" para continuar capturando el video. Si bien el usuario no presiona la tecla de salida, podemos leer los marcos y mostrarlos usando la lectura () y CV2.función imshow (). Luego ponemos una tecla de "romper" para salir del bucle; En este caso, el número 27 es la clave ESC. Si el usuario presiona la tecla ESC, sale desde el bucle. Una vez fuera del bucle, es necesario liberar la captura.

importar numpy como np
Importar CV2
captura = CV2.Videocapture (0)
mientras (verdadero):
ret, marco = captura.leer()
CV2.imshow ('marco', marco)
Si CV2.WaitKey (1) y 0xff == 27:
romper
captura.liberar()
CV2.DestroyallWindows ()

Reproduciendo un archivo de video

Reproducir un archivo de video es como capturar un video de una cámara web. Para hacer esto, el CV2.Se utiliza la función de videocapture (); El nombre del archivo de video que desea reproducir se agrega a la función. El bucle "while" se usa nuevamente, y la tecla de salida, en este caso, es la tecla "S" en el teclado. Esto se abrirá y reproducirá el archivo de video y lo cerrará cuando el usuario presione la tecla "S".

importar numpy como np
Importar CV2
captura = CV2.Videocapture ("Megamind.avi ")
mientras (verdadero):
ret, marco = captura.leer()
CV2.imshow ('marco', marco)
Si CV2.WaitKey (1) y 0xff == ord ("S"):
romper
captura.liberar()
CV2.DestroyallWindows ()

Guardar un archivo de video

Guardar un archivo de video requiere un poco más de trabajo. El CV2.La función VideoWriter () toma 4 parámetros en total: el nombre del archivo de salida, el código FourCC, el número de cuadros por segundo y el tamaño de la trama. Además, uno debe especificar el código FourCC, que es el códec de video utilizando el CV2.Función VideoWriter_FourCc (). Usando la captura.ISOPERED (), leemos el marco y escribimos el marco de salida. También podemos mostrar los marcos usando el CV2.función imshow (). Entonces, usamos CV2.WaitKey (1) y 0xff == ord ('s') para establecer una tecla de salida. En este caso, si el usuario presiona la tecla "S", saldrá del bucle y luego liberará la captura y la salida y cierra las ventanas.

importar numpy como np
Importar CV2
captura = CV2.Videocapture (0)
FourCc = CV2.VideoWriter_FourCC (*'xvid')
salida = CV2.VideoWriter ('Salida.avi ', cuatrocc, 30.0, (640,480))
Mientras (capturar.está abierto()):
ret, marco = captura.leer()
producción.escribir (marco)
CV2.imshow ('marco', marco)
Si CV2.Waitkey (1) y 0xff == ord ('s'):
romper
captura.liberar()
producción.liberar()
CV2.DestroyallWindows ()

Dibujo de líneas, círculos, rectángulos y textos

Lo primero que aprenderemos a dibujar es una línea. Para dibujar una línea, simplemente usamos el CV2.Función Line (). La función toma 5 argumentos: el video de origen, el punto de partida, el punto final, el color y el grosor de la línea. En el siguiente caso, hemos decidido dibujar un borde rectangular (compuesto por 4 líneas):

Importar CV2
captura = CV2.Videocapture ('VTest.avi ')
Mientras que es cierto:
ret, marco = captura.leer()
ancho = int (capturar.Get (3))
altura = int (captura.Get (4))
línea1 = CV2.línea (marco, (0,0), (0, altura), (255, 255, 255), 10)
línea2 = CV2.línea (línea1, (0, 0), (ancho, 0), (255, 255, 255), 10)
línea3 = CV2.línea (línea2, (0, altura), (ancho, altura), (255, 255, 255), 10)
línea4 = CV2.línea (línea3, (ancho, 0), (ancho, altura), (255, 255, 255), 10)
CV2.Imshow ('Frame', Line4)
Si CV2.WaitKey (40) == Ord ('Q'):
romper
captura.liberar()
CV2.DestroyallWindows ()

A continuación, dibujaremos un círculo y un rectángulo en el video. Para dibujar un rectángulo, usamos el CV2.función rectangle (), que toma 5 argumentos como la línea. Para dibujar un círculo, usamos la función CV2.círculo (), que también toma 5 argumentos: el video de origen, el punto central, el radio, el color y el grosor.

Importar CV2
captura = CV2.Videocapture ('VTest.avi ')
Mientras que es cierto:
ret, marco = captura.leer()
ancho = int (capturar.Get (3))
altura = int (captura.Get (4))
rectángulo = CV2.Rectángulo (marco, (150, 15), (650, 550), (0,0,0), 11)
CV2.Círculo (rectángulo, (250, 250), 60, (0,0,0), 11)
CV2.imshow ('marco', marco)
Si CV2.WaitKey (40) == Ord ('Q'):
romper
captura.liberar()
CV2.DestroyallWindows ()

Ahora, agregemos algún texto al video que tenemos. Para hacer esto, necesitamos especificar una fuente; Aquí, elegimos CV2.Font_hershey_simple. Una vez que se selecciona la fuente, podemos usar la función CV2.putText () para hacer el resto. CV2.putText () toma 8 argumentos: el video de origen, el texto que desea escribir, la posición donde lo desea, la fuente, el aumento, el color, el grosor y CV2.Line_aa (lo que hace que todo se vea mejor).

Importar CV2
captura = CV2.Videocapture ('VTest.avi ')
Mientras que es cierto:
ret, marco = captura.leer()
ancho = int (capturar.Get (3))
altura = int (captura.Get (4))
fuente = CV2.Font_hershey_simple
Imagen = CV2.puttext (marco, "VTest.Avi ", (200, 200), Font, 4, (0,0,0), 5, CV2.Line_aa)
CV2.imshow ('marco', imagen)
Si CV2.WaitKey (40) == Ord ('Q'):
romper
captura.liberar()
CV2.DestroyallWindows ()

OpenCV es capaz de muchas cosas geniales en las que uno debe comenzar en algún lugar. Podría estar aprendiendo a crear y guardar imágenes y videos. En este tutorial, aprendimos a hacer los conceptos básicos de la visión por computadora.

Codificación feliz!