Compiler OpenCV 4.13.0 avec VSCode et MinGW sans dépendances Qt

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

  1. 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.
  2. 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.exe et c++.exe de 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_QT pour supprimer la dépendance Qt.
      • Cochez WITH_WIN32UI pour utiliser l'interface utilisateur native de Windows pour l'affichage.
      • Cochez BUILD_opencv_world pour générer un seul fichier DLL (opencv_world4130.dll) regroupant tous les modules, simplifiant la configuration.
      • Décochez BUILD_TESTS et BUILD_EXAMPLES pour accélérer la compilation.
      • Sélectionnez Release pour CMAKE_BUILD_TYPE afin d'obtenir une version optimisée et plus légère.
      • CMAKE_INSTALL_PREFIX peut être laissé par défaut ; il déterminera le dossier d'installation des bibliothèques précompilées.
    • 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.
  3. 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 (remplacez 6 par 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/install contiendra les bibliothèques compilées, les en-têtes et les fichiers DLL.

Configuration de VSCode

  1. Organisation des Artefacts de Compilation

    Le répertoire install contient 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.dll du dossier bin dans 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.

  2. 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.dll
    
    

    Configuration de c_cpp_properties.json

    Ce 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.json

    Ce 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.)

Étiquettes: OpenCV C++ MinGW VSCode CMake

Publié le 2 août à 04h54