Ce guide détaille le processus de compilation manuelle d'OpenCV 4.13.0, spécifiquement pour un environnement VSCode utilisant MinGW. L'objectif est d'obtenir une version épurée, sans les dépendances Qt souvent incluses dans les binaires précompilés, et compatible avec les compilateurs MinGW modernes comme GCC 13.1.
Environnement de Compilation
Pour une compatibilité optimale, il est recommandé de suivre ces étapes avec les mêmes versions de logiciels. Les éléments nécessaires incluent :
- OpenCV 4.13.0 : Les sources officielles.
- MinGW-w64 : Version 13.1.0 (ou une version compatible).
- CMake : L'outil de build.
Assurez-vous que tous les chemins d'installation et d'extraction ne contiennent ni espaces ni caractères non-ASCII, car cela peut entraîner des échecs de compilation.
Configuration et Compilation avec CMake
-
Téléchargement et Organisation des Fichiers
- Téléchargez les sources d'OpenCV 4.13.0. Extrayez-les dans un répertoire sans espaces ni caractères spéciaux (ex:
D:/cpp/opencv-4.13.0). - Installez MinGW-w64 dans un chemin similaire (ex:
D:/cpp/mingw64). Configurez les variables d'environnement système pour MinGW. - Téléchargez et installez CMake.
- Téléchargez les sources d'OpenCV 4.13.0. Extrayez-les dans un répertoire sans espaces ni caractères spéciaux (ex:
-
Configuration CMake (Désactivation de Qt)
Lancez CMake (GUI).
- Définissez le répertoire source (ex:
D:/cpp/opencv-4.13.0/opencv-4.13.0). - Créez et spécifiez un répertoire de build vide (ex:
D:/cpp/opencv-4.13.0/build). - Cliquez sur "Configure". Sélectionnez "MinGW Makefiles" comme générateur et spécifiez les chemins vers
gcc.exeetc++.exede votre installation MinGW (ex:D:/cpp/mingw64/bin/gcc.exe). - Une fois la première configuration terminée (cela peut télécharger des dépendances comme FFmpeg), procédez aux ajustements clés :
- Décochez
WITH_QTpour supprimer la dépendance Qt. - Cochez
WITH_WIN32UIpour utiliser l'interface utilisateur native de Windows pour l'affichage. - Cochez
BUILD_opencv_worldpour générer un seul fichier DLL (opencv_world4130.dll) regroupant tous les modules, simplifiant la configuration. - Décochez
BUILD_TESTSetBUILD_EXAMPLESpour accélérer la compilation. - Sélectionnez
ReleasepourCMAKE_BUILD_TYPEafin d'obtenir une version optimisée et plus légère. CMAKE_INSTALL_PREFIXpeut être laissé par défaut ; il déterminera le dossier d'installation des bibliothèques précompilées.
- Décochez
- Cliquez à nouveau sur "Configure" jusqu'à ce que le message "Configuring done" apparaisse sans erreurs critiques (les avertissements sont généralement sans conséquence).
- Cliquez sur "Generate". Le message "Generating done" indique que la configuration est terminée.
- Définissez le répertoire source (ex:
-
Compilation en Ligne de Commande
Ouvrez une invite de commande (
cmd).- Naviguez jusqu'au répertoire de build créé précédemment (ex:
cd D:/cpp/opencv-4.13.0/build). - Exécutez la commande de compilation :
mingw32-make -j6(remplacez6par le nombre de cœurs de votre processeur pour accélérer le processus). - Une fois la compilation terminée, exécutez la commande d'installation :
mingw32-make install.
Le répertoire
build/installcontiendra les bibliothèques compilées, les en-têtes et les fichiers DLL. - Naviguez jusqu'au répertoire de build créé précédemment (ex:
Configuration de VSCode
-
Organisation des Artefacts de Compilation
Le répertoire
installcontient les sous-dossiers suivants :bin/: Fichiers DLL.include/: Fichiers d'en-tête (header).lib/: Fichiers de bibliothèque statique (.a).
Copiez le fichier
opencv_world4130.dlldu dossierbindans le répertoire de votre projet VSCode.Ajoutez le chemin absolu du répertoire
bin(contenant le DLL) à la variable d'environnement système PATH. -
Configuration du Projet VSCode
Créez la structure de dossier suivante pour votre projet :
mon_projet_opencv/ ├── .vscode/ │ ├── c_cpp_properties.json │ ├── tasks.json │ └── launch.json (optionnel) ├── main.cpp └── opencv_world4130.dllConfiguration de
c_cpp_properties.jsonCe fichier configure IntelliSense pour la complétion de code et la vérification des erreurs.
{ "configurations": [ { "name": "windows-gcc-x64", "includePath": [ "${workspaceFolder}/**", "D:/cpp/opencv/install/include" // Adaptez ce chemin à votre dossier d'installation OpenCV ], "defines": [], "compilerPath": "D:/cpp/mingw64/bin/gcc.exe", // Adaptez ce chemin "cStandard": "c17", "cppStandard": "gnu++17", "intelliSenseMode": "windows-gcc-x64" } ], "version": 4 }Configuration de
tasks.jsonCe fichier définit la tâche de compilation.
{ "version": "2.0.0", "tasks": [ { "type": "shell", "label": "build", "command": "D:/cpp/mingw64/bin/g++.exe", // Adaptez ce chemin "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe", "-I D:/cpp/opencv/install/include", // Chemin des en-têtes "-L D:/cpp/opencv/install/x64/mingw/lib", // Chemin des bibliothèques .a (adaptez si nécessaire) "-lopencv_world4130" // Bibliothèque globale OpenCV ], "group": {"kind": "build", "isDefault": true}, "problemMatcher": ["$gcc"], "options": {"cwd": "D:/cpp/mingw64/bin"} // Adaptez ce chemin } ] }Configuration de
launch.json(Optionnel pour le débogage){ "version": "0.2.0", "configurations": [ { "name": "Debug", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "D:/cpp/mingw64/bin/gdb.exe", // Adaptez ce chemin "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build" } ] }
Test de la Configuration
Créez un fichier main.cpp avec le code suivant pour tester l'accès à la webcam :
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
cv::VideoCapture cap(0); // Ouvre la webcam par défaut
if (!cap.isOpened()) {
std::cerr << "Erreur : Impossible d'ouvrir la webcam." << std::endl;
return -1;
}
std::cout << "Webcam ouverte. Appuyez sur 'q' pour quitter." << std::endl;
cv::Mat frame;
while (true) {
cap >> frame; // Capture une image
if (frame.empty()) {
std::cerr << "Erreur : Image vide reçue." << std::endl;
break;
}
cv::imshow("Flux Vidéo", frame); // Affiche l'image
// Attend 1ms et vérifie si la touche 'q' est pressée
if (cv::waitKey(1) == 'q') {
std::cout << "Fermeture du programme." << std::endl;
break;
}
}
cap.release(); // Libère la webcam
cv::destroyAllWindows(); // Ferme toutes les fenêtres OpenCV
return 0;
}
Compilez et exécutez le code dans VSCode (par exemple, en appuyant sur F5 si la configuration launch.json est correcte, ou via la commande de build définie dans tasks.json). Si une fenêtre affichant le flux de votre webcam apparaît, la configuration est réussie.
Ressources Supplémentaires
Les fichiers suivants sont partagés pour faciliter la mise en place :
mingw64-13.1.0.zip: Installation de MinGW-w64.opencv-4.13.0-compiled.zip: Version précompilée d'OpenCV 4.13.0 (sans Qt).opencv-4.13.0-source.zip: Sources d'OpenCV 4.13.0.cmake-3.27.3-windows-x86_64.zip: Installation de CMake.- (Note: Les liens de téléchargement directs ne sont pas fournis ici, mais les noms et versions indiquent où les trouver.)