Visión artificial. Tomás Domínguez Mínguez
Чтение книги онлайн.
Читать онлайн книгу Visión artificial - Tomás Domínguez Mínguez страница 5
Toda la documentación de esta librería se encuentra en:
https://docs.opencv.org/4.4.0/
Aunque no es imprescindible, aproveche también para instalar la librería matplotlib ejecutando el siguiente comando:
pip install matplotlib
Dicha librería le permitirá generar gráficos a partir de datos contenidos en listas.
Por similitud con la terminología utilizada en otros lenguajes de programación, el término librería se utilizará como sinónimo de módulo o paquete (aunque no sean conceptos exactamente iguales).
Unidad 3
PRIMEROS PASOS
En los siguientes apartados estudiará las operaciones básicas de creación o carga de imágenes desde un archivo y su visualización en pantalla, así como la modificación de su contenido y posterior almacenamiento en disco.
Pero antes deberá conocer el sistema de coordenadas utilizado, en el que cada píxel se localiza en la imagen por su posición horizontal y vertical (x, y). Como puede ver en la siguiente figura, el origen (0, 0) no está localizado en el centro de la imagen, sino en la parte superior izquierda. El píxel marcado en color rojo estaría situado en la coordenada (3, 1).
Otro de los conceptos básicos previos al uso de las funciones de OpenCV es el color, formado por los componentes B, G, R (Blue, Green, Red; Azul, Verde, Rojo), o lo que es lo mismo, los valores de la intensidad de sus componentes azul, verde y rojo. Estos tres colores se consideran primarios porque cualquier otro color se puede obtener a partir de una mezcla de ellos. El valor mínimo de intensidad que pueden tener es 0, y el máximo, 255.
Seguramente le resulte más familiar el espacio de color RGB; por eso, preste especial atención al hecho de que OpenCV utiliza por defecto BGR. Más adelante sabrá cómo pasar de uno a otro o incluso a HSV, ampliamente utilizado en las técnicas de reconocimiento y seguimiento de objetos por su mayor eficiencia.
Ejemplos de especificación de colores utilizando la nomenclatura BGR serían:
• Blanco: (255, 255, 255)
• Negro: (0, 0, 0)
• Rojo: (0, 0, 255)
• Verde: (0, 255, 0)
• Azul: (255, 0, 0)
• Amarillo: (0, 255, 255)
• Púrpura: (255, 0, 255)
• Cian: (255, 255, 0)
Opcionalmente, un píxel puede tener asociado un cuarto parámetro que define su transparencia: el canal alfa. Sus valores van desde 0 (completamente trasparente) a 100 (totalmente opaco).
3.1 CARGA Y VISUALIZACIÓN DE LA IMAGEN ALMACENADA EN UN ARCHIVO
Para mostrar una imagen en pantalla, previamente hay que cargarla con la función de OpenCV:
imread(archivo)
Su único argumento contiene el nombre del archivo donde se encuentra la imagen (o la ruta, en el caso de que no esté en la misma carpeta que el programa). Esta función también admite un segundo argumento opcional para especificar la información que se carga de la imagen. Su valor podrá ser el de cualquiera de estas constantes:
• IMREAD_GRAYSCALE. Carga la imagen en blanco y negro. Su valor es 0.
• IMREAD_COLOR. Carga la imagen en color (se ignora el canal alfa). Su valor es 1.
• IMREAD_UNCHANGED. Carga la imagen incluyendo el canal alfa. Su valor es -1.
Si no se indica este argumento, la función toma por defecto el valor IMREAD_COLOR.
El canal alfa define la opacidad de un píxel, es decir, su grado de transparencia. No todos los formatos de imagen admiten este canal (que se añade a los tres correspondientes a los colores primarios). Así, por ejemplo, mientras JPG no lo permite, PNG sí contiene este tipo de información.
Entre los formatos de imágenes que se soportan destacan BMP, JPEG, PNG y TIFF, entre otros. OpenCV no tiene códec para GIF, por lo que el manejo de imágenes en este formato requiere la librería imageio, que tendrá que haber cargado previamente en su entorno Python. Si quiere saber cómo utilizarla, visite https://pypi.org/project/imageio/.
Esta función devolverá un objeto de la clase ndarray, perteneciente a la librería NumPy. Dicho objeto mantiene una matriz cuyos elementos establecen el nivel de luz o color de los píxeles de la imagen.
Una vez obtenida la imagen, la forma de mostrarla en pantalla es llamando a la función de OpenCV:
imshow(ventana, imagen)
El primer argumento determina el título de la ventana, mientras que el segundo contiene la imagen.
El tamaño de la ventana será el de la imagen. Si la resolución de esta fuera muy alta, solo se vería parte de ella.
En el siguiente programa se utilizan ambas funciones:
Con la primera sentencia se importa la librería OpenCV. A continuación, se carga la imagen “cuadro.jpg” (que está dentro de la carpeta “imagenes”) con la función imread(). Su segundo argumento es 0, lo que significa que la imagen se obtiene en blanco y negro. La última sentencia la muestra en una ventana llamada “Cuadro”.