OpenCV para C++: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es OpenCV y para qué sirve?

\n\n

OpenCV (Open Source Computer Vision Library) es una biblioteca multiplataforma de código abierto diseñada para tareas de visión por computadora y aprendizaje automático. Proporciona más de 2500 algoritmos optimizados que cubren prácticamente todas las áreas de la visión por computadora: desde el procesamiento simple de imágenes (filtrado, transformaciones geométricas) hasta tareas complejas (reconocimiento facial, seguimiento de objetos, reconstrucción 3D, análisis de video).

\n\n

La biblioteca está escrita en C++ y C, lo que garantiza un alto rendimiento, y tiene interfaces para Python, Java, MATLAB y otros lenguajes. En esta guía nos centraremos en el uso de OpenCV desde C++: es la opción óptima para sistemas de producción donde la velocidad y la gestión eficiente de la memoria son críticas.

\n\n

¿Para qué sirve OpenCV?

\n
    \n
  • Procesamiento de imágenes: cambio de tamaño, rotación, filtrado, mejora de contraste, corrección de color.
  • \n
  • Análisis de video: lectura/escritura de video, detección de movimiento, seguimiento de objetos.
  • \n
  • Reconocimiento de objetos: rostros, automóviles, texto (OCR), gestos.
  • \n
  • Calibración de cámaras: corrección de distorsiones, visión estéreo.
  • \n
  • Aprendizaje automático: clasificadores integrados (SVM, KNN, Decision Trees) e integración con DNN (Deep Neural Networks) para trabajar con modelos de TensorFlow, Caffe, PyTorch.
  • \n
\n\n

Instalación de OpenCV para C++

\n\n

A diferencia de Python, donde un solo comando pip install opencv-python es suficiente, la instalación de OpenCV para C++ requiere compilación o el uso de paquetes binarios precompilados. Veamos los métodos principales.

\n\n

1. Instalación mediante gestor de paquetes (Linux/macOS)

\n

Ubuntu/Debian:

\n
sudo apt update\nsudo apt install libopencv-dev
\n

macOS (Homebrew):

\n
brew install opencv
\n\n

2. Instalación mediante vcpkg (Windows, Linux, macOS)

\n

vcpkg es un gestor de paquetes multiplataforma de Microsoft. Primero instale vcpkg:

\n
git clone https://github.com/Microsoft/vcpkg.git\ncd vcpkg\n./bootstrap-vcpkg.sh  # Linux/macOS\n.\\bootstrap-vcpkg.bat # Windows
\n

Luego instale OpenCV:

\n
./vcpkg install opencv4
\n

Después de la instalación, enlace la biblioteca en CMake:

\n
cmake_minimum_required(VERSION 3.10)\nproject(MyOpenCVProject)\nfind_package(OpenCV REQUIRED)\nadd_executable(main main.cpp)\ntarget_link_libraries(main ${OpenCV_LIBS})
\n\n

3. Compilación desde el código fuente (nivel avanzado)

\n

Este método ofrece el máximo control sobre los módulos incluidos y las optimizaciones:

\n
git clone https://github.com/opencv/opencv.git\ncd opencv\nmkdir build && cd build\ncmake -D CMAKE_BUILD_TYPE=RELEASE \\\n      -D CMAKE_INSTALL_PREFIX=/usr/local \\\n      -D WITH_TBB=ON \\\n      -D WITH_V4L=ON \\\n      -D WITH_QT=ON \\\n      -D WITH_OPENGL=ON ..\nmake -j$(nproc)\nsudo make install
\n\n

Inicio rápido: cargar y mostrar una imagen

\n

Verifiquemos que OpenCV esté instalado correctamente escribiendo un programa simple que cargue una imagen, la convierta a escala de grises y la muestre.

\n\n
#include <opencv2/opencv.hpp>\n#include <iostream>\n\nint main() {\n    // Cargamos la imagen\n    cv::Mat img = cv::imread("example.jpg");\n    if (img.empty()) {\n        std::cerr << "¡No se pudo cargar la imagen!" << std::endl;\n        return -1;\n    }\n\n    // Convertimos a escala de grises\n    cv::Mat gray;\n    cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);\n\n    // Mostramos ambas imágenes\n    cv::imshow("Original", img);\n    cv::imshow("Gris", gray);\n\n    // Esperamos la pulsación de una tecla\n    cv::waitKey(0);\n    cv::destroyAllWindows();\n\n    return 0;\n}
                
    
    

Recommendations