web-dev-qa-db-fra.com

Comment lier opencv dans QtCreator et utiliser la bibliothèque Qt

Cette question doit être répétée plusieurs fois, mais cela ne fonctionne tout simplement pas et reste parfois sans réponse. Les sources d’information sont principalement celles
http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
http://www.youtube.com/watch?v=dgcXYQijV6c

C’est la somme de ce que je pense que l’on devrait/peut faire. (Et maintenant ça marche pour moi.) J'espère avoir tout mentionné dès le début, le but est d'écrire un tutoriel très clair.

Installation d'OpenCV pour QtCreator

  1. J'ai déjà installé MS Visual Studio 2010 Professional. (J'ai une licence gratuite en tant qu'étudiant) - Je pense que ce n'est pas nécessaire, juste une mention
  2. Télécharger: Qt 5.0.1 pour Windows 32 bits (MinGW 4.7, 823 Mo)
    2.1 Installer: Attention, tout ce que Qt utilise (par exemple, OpenCV) doit se trouver dans des répertoires ne contenant pas d'espaces blancs. noms. - c’est-à-dire que "Program Files" est faux. (Mais je ne veux pas que différents fichiers de programme s'accumulent directement sur le C, je n'ai donc créé qu'un dossier "Programmes" dans lequel tout ce qui est important est installé)
  3. Télécharger: cmake-2.8.10.2-win32-x86.exe - Installez-le pour tous les utilisateurs (cela peut être dans Program Files)
  4. Télécharger: OpenCV-2.4.0.exe, extrayez-le pour: C:\Programmes\opencv24 - ça va créer un répertoire "opencv"; ajoutez un autre dossier "opencv_bin". Maintenant ça ressemble à ça:
    C:\Programmes\opencv24\opencv *
    C:\Programmes\opencv24\opencv_bin
  5. Définissez la variable d'environnement PATH , afin qu'il y ait un lien vers le compilateur MinGW. par exemple. C:\Programmes\Qt\Qt5.0.1\Tools\MinGW\bin;
  6. Lancez cmake-gui.exe
    6.1 code source: définit le répertoire par défaut pour OpenCV; C:\Programmes\opencv24\opencv
    6.2 binaires: définit le répertoire opencv_bin; C:\Programmes\copencv24\opencv_bin
    6.3 cliquez sur Configurer:
    • Choisissez MinGW Makefiles et Spécifiez les compilateurs natifs , cliquez sur suivant.
    • Le champ C est pour gcc.exe; C: /Programs/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
    • Le champ C++ est pour g ++. Exe; C: /Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g ++. Exe
    • Champ fortran peut être vide, cliquez sur terminer
    6.4 De nombreuses lignes rouges apparaissent Entrez un par un dans le champ de recherche: WITH_QT, WITH_TBB, WITH_CUDA, CMAKE_BUILD_TYPE
    • WITH_QT - doit être sélectionné.
    • WITH_TBB, WITH_IPP, WITH_CUDA - doit être désélectionné
    • CMAKE_BUILD_TYPE - cliquez et entrez un texte "Debug" (sans guillemets).
    • Efface le texte du champ Rechercher.
    6.5 cliquez sur Configurer et continuez à cliquer sur Configurer jusqu'à ce que toutes les lignes rouges disparaissent, puis cliquez sur Générer et fermer cmake-gui.exe
  7. Allez au terminal (~ invite de commande), allez dans le répertoire où se trouvent les builds (opencv_bin) et tapez mingw32-make
  8. Lorsque le processus se termine après une longue période, tapez mingw32-make install
  9. Ajouter à la variable Path le chemin d'accès à QtCreator/bin C:\Programmes\Qt\Qt5.0.1\Tools\QtCreator\bin

Maintenant, j'ai créé une nouvelle application de console dans QtCreator.

//cvHello.pro
QT       += core
QT       -= gui

TARGET = cvHello
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app
INCLUDEPATH += C:/Programs/opencv24/opencv_bin2/install/include
LIBS += "C:/Programs/opencv24/opencv_bin2/bin/*.dll"

SOURCES += main.cpp
OTHER_FILES += \
    img.JPG

Et le fichier principal:

//main.cpp
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv/cv.h"

using namespace std;

int main()
{
    cout << "Hello World!" << endl;

    cv::Mat mat;
    mat = cv::imread("img.JPG");
    cvNamedWindow("hello");
    cv::imshow("hello",mat);

    cvWaitKey(0);

    return 0;
}
45
Daniel Katz

Enfin je commence à être heureux. En ajustant cette question, je devais essayer de toutes les manières, comment définir LIBS. Les répertorier manuellement a aidé, au début je leur ai écrit en quelque sorte à tort.

Voici comment cela fonctionne finalement:

LIBS += -LC:\\Programs\\opencv24\\opencv_bin2\\bin \
    libopencv_core240d \
    libopencv_highgui240d \
    libopencv_imgproc240d \
    libopencv_features2d240d \
    libopencv_calib3d240d \

Au fait, si j'ai fait des erreurs de grammaire, je suis désolé pour mon anglais. :)

12
Daniel Katz

La réponse initialement acceptée ne fonctionnait pas pour moi. J'utilise MSVC2013 Professional et QT5.9. J'ai trouvé la solution SIMPLE et SUREFIRE CROSS-PLATFORM qui devrait aider quiconque tente de relier une bibliothèque externe (telle que openCV) à QT.

Les étapes répertoriées ci-dessous figurent dans la documentation Qt5: http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html dans la section "Pour ajouter une bibliothèque".

  1. Faites un clic droit sur le fichier de projet situé dans le volet du projet à gauche du créateur ... et sélectionnez "Ajouter une bibliothèque ...".
  2. Suivez les instructions de l'assistant

Permettez-moi d'ajouter une spécificité à partir d'ici:

  1. Sélectionnez "Bibliothèque externe"
  2. Pour le "fichier de bibliothèque", accédez à votre fichier opencv_worldXXX.lib (ou opencv_worldXXXd.lib). Vous remarquerez qu'en ne spécifiant que l'un ou l'autre, l'assistant a une case à cocher incluant automatiquement l'autre) [ex. ...\opencv\build\x64\vc12\lib\opncv_world310.lib]
  3. Pour le "Dossier d'inclusion", accédez au dossier "Inclure" de la construction. [ex. ...\opencv\build\include]
  4. Sélectionnez votre système d'exploitation, bibliothèque dynamique/statique (selon ce qui est approprié)
  5. Appuyez sur NEXT, CLEAN UP et RUN!
2
IntenseCorona