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;
}