Uso de la función Opencv notes-imwrite

Cuando vi las partes de entrada, visualización y salida de imagen de la introducción a la programación Opencv3, encontré dificultades para comprender el programa al aplicar la función imwrite. Recopile y comprenda refiriéndose a la información.

 

void createAlphaMat (Mat & mat)
{
 for (int i = 0; i <mat.rows; ++ i) {                                                                    for (int j = 0; j <mat.cols; ++ j) {                                                                      Vec4b & rgba = mat.at <Vec4b > (i, j);    rgba [0] = UCHAR_MAX;    rgba [1] = saturate_cast <uchar> ((float (mat.cols - j)) / ((float) mat.cols) * UCHAR_MAX);    rgba [2] = saturate_cast <uchar> ((float (mat.rows - i)) / ((float) mat.rows) * UCHAR_MAX);    rgba [3] = saturate_cast <uchar> (0.5 * (rgba [1] + rgba [2]));   }  } }     
                                                        







filas significa: filas cols significa: columnas   

Vec4b & rgba = mat.at <Vec4b> (i, j);

mat.at (i, j), toma un píxel de mat, el tipo de píxel es Vec4b, el significado de este tipo es, hay 4 elementos de tipo UCHAR,

Entre ellos, rgba [0], rgba [1], rgab [2] representan los tres colores primarios del píxel, BGR, a saber, azul (Azul), Verde (verde), rojo (Rojo).

rgba [3] representa el valor alfa del píxel, indicando la transparencia del píxel. Entre ellos: .at significa Mat que accede a píxeles (at) Lee un píxel pin

  saturate_cast <uchar> ((float (mat.cols - j)) / ((float) mat.cols) * UCHAR_MAX);

 

// ----------------------------------- 【Función ShowHelpText ()】 ------- ---------------------------
// Descripción: muestra información de ayuda
// ------------- -------------------------------------------------- -------------------------------
void ShowHelpText ()
{
 // Mensaje de bienvenida de salida y versión de OpenCV
 printf ("\ n \ n \ t \ t \ tMuchas gracias por comprar el libro "Introducción a la programación de OpenCV3"! \ n ");
 printf (" \ n \ n \ t \ t \ t \ tEste es el 15º programa de ejemplo de soporte de esta versión de OpenCV3 n ");
 printf (" \ n \ n \ t \ t \ t La versión actual de OpenCV utilizada es: "CV_VERSION);
 printf (" \ n \ n --------------- -------------------------------------------------- ----------- \ n ");
}

int main ()
{
 // Crear Mat
 Mat Mat con canal alfa (480, 640, CV_8UC4);
 createAlphaMat (mat);

 ShowHelpText ();

 vector <int> compress_params;
 // La versión OpenCV2 de este código de oración es:
 //compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
 // La versión OpenCV3 de este código de oración es:
 compress_params.push_back (IMWRITE_PNG_COMPRESSION);
 compresión_params.push;)

 // Muestra la imagen
 try {
  imwrite ("Transparent Alpha value map.png", mat, compress_params);
  imshow ("Generated image image", mat);
  fprintf (stdout, "Los datos alfa del archivo de imagen PNG se guardan ~ \ n Puede ver las imágenes generadas por la función imwrite en el directorio del proyecto \ n ");
  waitKey (0);
 }
 catch (runtime_error & ex) {
  fprintf (stderr," Se produjo un error al convertir la imagen a formato PNG:% s \ n ", ej. what ());
  return 1;
 }

 devuelve 0;
}

18 artículos originales publicados · Me gusta1 · Visitas 2680

Supongo que te gusta

Origin blog.csdn.net/taochengwu123/article/details/84848773
Recomendado
Clasificación