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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus 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.