En OpenCV Mat es una clase y palabra reservada que permite declarar matrices de 1, 2 o más dimensiones. Una variable Mat puede guardar imágenes en formato RGB, Gris o Blanco/Negro, incluso otro tipos de esquemas de color. En este tutorial se usará para generar imágenes virtuales con un par de ejemplos en QT y C++. Finalmente para el uso de la clase Mat se requiere agregar esta biblioteca: #include <core.hpp>.
Conocimiento previo:
Sintaxis:
- Mat nombreMatriz;
- Mat nombreMatriz(Largo, Ancho, Formato, Color);
Parámetros de entrada:
- Los parámetros de entrada sólo son necesarios, cuando se creará una imagen virtual o para definir una imagen pixel por pixel. Por otro lado cuando se leerá una imagen de video, de una cámara IP o de una imagen jpg u otro formato, no son necesarios dichos parámetros.
- Largo. Por otro lado, es un numero entero que define el largo de la imagen para crear.
- Ancho. También en este parámetro también se coloca un numero entero que define el ancho en pixeles de la nueva imagen.
- Formato. Por ejemplo el formato especifica el tamaño en bits para cada pixel, la dimensión (canales de la matriz) y si se contará con valores con signo.
- Formatos aceptados: CV_[Numero De Bits][S/U (Con signo o sin signo)]C[Numero de canales];
- Ejemplos:
- CV_8UC3. Matriz de 8bits sin el signo de 3 canales.
- CV_8UC1. Matriz de 8 bits sin signo de 1 canal.
- Ejemplos:
- Formatos aceptados: CV_[Numero De Bits][S/U (Con signo o sin signo)]C[Numero de canales];
- Color. También, el parámetro de color es opcional y es útil para definir los valores constantes que tendrán cada canal de una matriz. Por ejemplo:
- Scalar(0,0,0). Entonces si se coloca esta instrucción como parámetro de entrada, se esta indicando que todos los pixeles de los tres canales de una matriz tendrán el pixel negro.
- Scalar(255,255,255). Por el contrario, la instrucción anterior especificaría una imagen blanca.
- Scalar(255,0,0). Entonces, dado que una matriz de OpenCV Mat tiene el orden de los canales como BGR – Blue Green Red o Azul Verde y Rojo. Entonces la instrucción anterior estaría creando una matriz puramente azul.
- Scalar(0,255,0). Por ejemplo a instrucción declara una matriz Verde.
- Scalar(0,0,255). Entonces está instrucción declara una matriz Roja.
Ejemplos de declaración de OpenCV Mat
- Mat IMAGEN2(250,250,CV_8UC3,Scalar(0, 255, 0)); //Entonces esta instrucción declarará una matriz de 250×250 px de 8 bits que no considera el signo con 3 canales. Por default, la matriz generada será una matriz Verde.
- Mat IMAGEN2(250,250,CV_8UC3,Scalar(255, 255, 0));
Descomponer un Mat en tres canales para una Imagen RGB con OpenCV Mat
Para descomponer una matriz Mat en sus tres canales, se utilizará a la función push_back que pertene a la clase Mat. Entonces se usará para tal propósito el siguiente ejemplo. Por ejemplo, el objetivo es descomponer una matriz de colores en tres matrices de 3 canales, pero sólo con el canal B, G o R.
Código de Ejemplo en C++
Descarga el proyecto completo.
https://hetpro-store.com/TUTORIALES/EjemplosProgramas/QT-OpenCV-Mat-Completo.zip