OpenCV pour C++ : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce qu'OpenCV et pourquoi en a-t-on besoin ?

\n\n

OpenCV (Open Source Computer Vision Library) est une bibliothèque multiplateforme open source conçue pour les tâches de vision par ordinateur et d'apprentissage automatique. Elle fournit plus de 2500 algorithmes optimisés qui couvrent pratiquement tous les domaines de la vision par ordinateur : du simple traitement d'images (filtrage, transformations géométriques) aux tâches complexes (reconnaissance faciale, suivi d'objets, reconstruction 3D, analyse vidéo).

\n\n

La bibliothèque est écrite en C++ et C, ce qui garantit des performances élevées, et possède des liaisons vers Python, Java, MATLAB et d'autres langages. Dans ce guide, nous nous concentrerons sur l'utilisation d'OpenCV depuis le C++ — c'est le choix optimal pour les systèmes de production où la vitesse d'exécution et la gestion efficace de la mémoire sont critiques.

\n\n

Pourquoi a-t-on besoin d'OpenCV ?

\n
    \n
  • Traitement d'images : redimensionnement, rotation, filtrage, amélioration du contraste, correction des couleurs.
  • \n
  • Analyse vidéo : lecture/écriture de vidéos, détection de mouvement, suivi d'objets.
  • \n
  • Reconnaissance d'objets : visages, voitures, texte (OCR), gestes.
  • \n
  • Calibrage de caméras : correction des distorsions, vision stéréoscopique.
  • \n
  • Apprentissage automatique : classificateurs intégrés (SVM, KNN, Decision Trees) et intégration avec DNN (Deep Neural Networks) pour travailler avec les modèles TensorFlow, Caffe, PyTorch.
  • \n
\n\n

Installation d'OpenCV pour C++

\n\n

Contrairement à Python, où une seule commande pip install opencv-python suffit, l'installation d'OpenCV pour C++ nécessite une compilation ou l'utilisation de paquets binaires prêts à l'emploi. Examinons les principales méthodes.

\n\n

1. Installation via le gestionnaire de paquets (Linux/macOS)

\n

Ubuntu/Debian :

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

macOS (Homebrew) :

\n
brew install opencv
\n\n

2. Installation via vcpkg (Windows, Linux, macOS)

\n

vcpkg est un gestionnaire de paquets multiplateforme de Microsoft. Commencez par installer vcpkg :

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

Ensuite, installez OpenCV :

\n
./vcpkg install opencv4
\n

Après l'installation, connectez la bibliothèque dans 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. Compilation à partir des sources (niveau avancé)

\n

Cette méthode offre un contrôle maximal sur les modules inclus et les optimisations :

\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

Démarrage rapide : chargement et affichage d'une image

\n

Vérifions qu'OpenCV est correctement installé en écrivant un programme simple qui charge une image, la convertit en niveaux de gris et l'affiche.

\n\n
#include <opencv2/opencv.hpp>\n#include <iostream>\n\nint main() {\n    // Chargeons l'image\n    cv::Mat img = cv::imread("example.jpg");\n    if (img.empty()) {\n        std::cerr << "Impossible de charger l'image !" << std::endl;\n        return -1;\n    }\n\n    // Convertissons en niveaux de gris\n    cv::Mat gray;\n    cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);\n\n    // Affichons les deux images\n    cv::imshow("Original", img);\n    cv::imshow("Gray", gray);\n\n    // Attendons une pression de touche\n    cv::waitKey(0);\n    cv::destroyAllWindows();\n\n    return 0;\n}
                
    
    

Recommendations