OpenCV Mat C++, Sintaxis, uso y ejemplos con QT Creator

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:

 

OpenCV Mat

 

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.
    • 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));

OpenCV Mat

 

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

Autor: Dr. Rubén Estrada Marmolejo

Escríbenos tus dudas o comentarios

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.