En este artículo, discutiremos cómo abrir una imagen usando OpenCV (Open Source Computer Vision) en C++ . A diferencia de Python, no se requieren bibliotecas adicionales en C++. OpenCV C++ viene con este increíble contenedor de imágenes Mat que maneja todo por nosotros. El único cambio visto desde un programa C++ estándar es la inclusión del espacio de nombres cv que contiene todas las funciones, clases y estructuras de datos de OpenCV . Se requieren las siguientes funciones para leer y mostrar una imagen en OPenCV:
imread() : Esta función se usa para leer imágenes y toma los siguientes 2 argumentos:
- filename: La dirección completa de la imagen a cargar es de tipo string. Por ejemplo: “C:\usuarios\descargas\muestra.jpg”
- flag: Es un argumento opcional y determina el modo en que se lee la imagen y puede tomar varios valores como
- IMREAD_COLOR: el modo predeterminado en el que se carga la imagen si no se proporcionan argumentos. Carga la imagen en formato BGR.
- IMREAD_UNCHANGED: Carga la imagen en su forma original. También incluye el canal alfa si está presente dentro de la imagen.
- IMREAD_GRAYSCALE: Carga la imagen como una imagen en escala de grises.
Salida: devuelve la imagen como un objeto Mat
Uso:
// Leyendo el archivo de imagen
Mat image = imread(“C:/users/downloads/default.jpg”, IMREAD_grayscale);
imshow() : esta función se usa para mostrar imágenes y toma los siguientes dos argumentos:
- winname o nombre de la ventana: Este es el título de la ventana que muestra la imagen y es de tipo string.
- imagen: Esta es la imagen que se mostrará. Su tipo es Mat , el contenedor de imágenes de C++.
Salida: Cree una ventana que muestre la imagen.
Uso:
// Mostrar nuestra imagen dentro de la ventana creada
imshow(“Nombre de la ventana”, imagen);
Mat::empty(): Esto nos ayuda en el manejo de errores en caso de que la función imread() no pueda cargar la imagen o la imagen no existe en la ruta especificada y nos dice si el contenedor Mat está vacío o no.
WaitKey(): esta función ayuda a mostrar imágenes durante más tiempo al mantener la ventana abierta hasta que el usuario presiona una tecla.
A continuación se muestra el programa para el mismo:
C++
// C++ program for the above approach #include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; // Driver code int main(int argc, char** argv) { // Read the image file as // imread("default.jpg"); Mat image = imread("Enter the Address" "of Input Image", IMREAD_GRAYSCALE); // Error Handling if (image.empty()) { cout << "Image File " << "Not Found" << endl; // wait for any key press cin.get(); return -1; } // Show Image inside a window with // the name provided imshow("Window Name", image); // Wait for any keystroke waitKey(0); return 0; }
Imagen de entrada:
Imagen de salida:
Publicación traducida automáticamente
Artículo escrito por Captain_JackSparrow y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA