Visión por computadora con OpenCV y Python

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Introducción

Los datos a menudo se definen como hechos en bruto. La información se refiere a cualquier cantidad o cantidad de datos que han sido procesados ​​y tienen más valor que los propios hechos en bruto. La diferencia clave es que se pueden tomar decisiones y acciones basadas en el estudio de la información. no Basar decisiones y acciones en datos, solo información.

41245sources_of_data_collection-6405231

Fuente: StudiousGuy

Resumen

Siguiendo nuestro Artículo anterior en Computer Vision, ahora vamos a explorar más el mundo de Computer Vision en el lenguaje de programación Python, utilizando el paquete OpenCV Python. Este artículo nos mostrará cómo realizar algunas de las muchas operaciones que ofrece OpenCV en el lenguaje de programación Python. En el artículo anterior, examinamos el siguiente bloque de código y ahora veremos algunos aspectos más en este artículo.

import cv2
# load it in GRAYSCALE color mode...
image = cv2.imread("""C:/Users/Shivek/Pictures/487px-OpenCV_Logo_with_text_svg_version.svg.png""", 0)
cv2.imshow('DataPeaker Computer Vision', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
869691_jqofwnwo5anck5ug2ezdgw-5841165

Fuente: Medio

Comprensión de los conceptos básicos de CV

Como puede haber visto, en nuestro artículo anterior, hemos leído (cargado) la imagen del logotipo de OpenCV en la memoria de nuestro sistema, utilizando el método integrado de la biblioteca OpenCV, imread (). Al utilizar este método, pasamos dos argumentos, a saber, un nombre de archivo y una bandera. El nombre del archivo especificaba el nombre y la ubicación del archivo en su computadora personal, mientras que la bandera podía verse como la configuración de color de la imagen. Al recordarlo, recordamos que leemos la imagen en nuestra memoria en un formato de color ESCALA DE GRISES.

Ahora, el aspecto más crucial para comprender OpenCV:

Las imágenes son datos. Cuando utiliza el método imread () de OpenCV, está convirtiendo los datos de la imagen sin procesar en otro tipo de datos. El nuevo tipo de datos es uno con el que todos en DataPeaker estamos muy familiarizados y es Una matriz NumPy que comprende números enteros. Cada elemento de la matriz representa la intensidad del color de los píxeles y puede tener uno o más elementos dentro. Dado que hemos cargado nuestra matriz en formato de color ESCALA DE GRISES, uno encontrará que cada píxel se representa como un valor único que puede tomar un valor igual y que va desde cero (0) a doscientos cincuenta y cinco (255 ). A medida que uno pasa de 0 a valores más altos, la intensidad de un píxel específico aumenta, lo que lo hace más llamativo a la vista.

0 = El color negro.
255 = El color blanco.

Básicamente, lo que estoy tratando de transmitir es lo siguiente (he omitido la fuente ya que es la misma que en el artículo anterior, y también para permitir el flujo de información):

Empezamos con la siguiente imagen:

65619487px-opencv_logo_with_text_svg_version-svg_-6639257

A continuación, devolvimos la imagen en ESCALA DE GRISES y obtuvimos la imagen en un nuevo formato como se muestra a continuación:

14-1-2178252

Ahora imprimiremos el contenido de la variable que está almacenando nuestra imagen en ESCALA DE GRISES:

# variable image stored our GRAYSCALE image
print(image)

-Recibimos la salida del código anterior de la siguiente manera:

14-2-7855870

Ahora imprimiremos el tipo de imagen variable:

print(type(image))

La salida se verá de la siguiente manera:

14-3-1121119

Básicamente, OpenCV ha transformado nuestra imagen en una matriz NumPy, en la que hay valores de 0 a 255 que representan la intensidad de los píxeles, que corresponden a los colores que vemos en la imagen ESCALA DE GRISES. Recuerde que las imágenes en ESCALA DE GRISES siempre devolverán una matriz en la que cada píxel tiene un valor único que va de 0 (negro) a 255 (blanco).

Devolviendo la forma de la matriz.

Imprimamos la forma de la matriz NumPy en la consola.

print(image.shape)

La salida se verá de la siguiente manera:

14-4-4304073

Nuestra matriz tiene 600 filas y 487 columnas. En terminología de imágenes, se diría que la imagen tiene unas dimensiones de 600 píxeles (alto) por 487 píxeles (ancho).

Impresión de la imagen con píxeles

Dado que OpenCV ha transformado los píxeles de nuestra imagen en una matriz NumPy con números enteros, podemos realizar operaciones NumPy en la matriz que contiene los valores de píxeles de la imagen y manipular la matriz.

Nuestra matriz es bidimensional. Esto significa que tiene filas y columnas. Realicemos un poco de indexación y división en la matriz, y devolveremos el contenido.

cv2.imshow("AV", image[0:100])

cv2.waitKey()

cv2.destroyAllWindows()

Si uno está familiarizado con la técnica de indexación y corte, podrá ver que estamos intentando cortar una porción de nuestra matriz de imágenes (NumPy). Nuevamente, es crucial comprender y ser consciente del hecho de que la biblioteca OpenCV en el lenguaje de programación Python representa sus imágenes y objetos asociados como NumPy nd-Arrays.

98808numpy-array-2607932

Fuente: Producción de IA en India.

Explicación del código.

Las explicaciones línea por línea para el bloque de código anterior son las siguientes:

cv2.imshow («DataPeaker Computer Vision», imagen[0:100])

El método imshow () se usa para mostrar una imagen en la pantalla empleando una GUI. Sin embargo, en esta instancia en particular pasamos un nombre para la ventana GUI, y solo una porción de la matriz de píxeles, utilizando el corte. Específicamente, deseamos devolver las primeras 100 filas (altura) de la imagen.

cv2.waitKey()

Esto esperará infinitamente a que se cierre la ventana de la GUI, es decir, la acción / interacción del usuario cerrará esta ventana. Puede pasar un valor entero como argumento que representa la duración (en milisegundos), la ventana de la GUI debe esperar antes de terminar automáticamente.

cv2.destroyAllWindows()

La línea de código anterior terminará todas las ventanas GUI de OpenCV activas / abiertas. Puede pasar el nombre de una ventana GUI específica para terminar como una cadena.

La salida se verá de la siguiente manera:

92081picture1-6384376

Por lo tanto, hemos devuelto con éxito las primeras 100 filas de píxeles de nuestra imagen. Siéntase libre de experimentar con la imagen y ver si el píxel en una posición particular coincide con el color que se encuentra en la propia imagen.

Esto concluye mi artículo sobre Visión por computadora con Python. Espero que haya disfrutado leyendo este artículo y haya aprendido un nuevo concepto.

Por favor, siéntete libre de conectarte conmigo en LinkedIn.

Gracias por tu tiempo.

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.