Qt avec OpenCV : édition des liens
Windows XP SP3 32 bits, Qt 4.4.1, openCV2.3.1, Visual C++ 2008 Express Edition SP1
Bonjour à tous et à toutes!
J´ai un petit soucis de déclaration de lib avec openCV.
J´ai installé la bibliothèque, configuré mon environnement de développement:
# rajouté à PATH le lien C:\Dev\openCV\openCV2.3.1\build\x86\vc9\bin
# rajouté à Tools|Options|Projects and Solutions|VC++Directories:
....# C:\Dev\openCV\openCV2.3.1\build\x86\vc9\bin pour les exécutables
....# C:\Dev\openCV\openCV2.3.1\build\x86\vc9\lib pour les library files
....# C:\Dev\openCV\openCV2.3.1\build\include et
....# C:\Dev\openCV\openCV2.3.1\build\include\opencv pour les include files.
J´ai testé mon installation dans un premier temps en créant un projet avec les Options Visual C++|General et le type "Empty Project".J´ai utilisé le code suivant que j´ai trouvé sur le site openCV:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <cv.h>
#include <highgui.h>
int main ( int argc, char **argv )
{
cvNamedWindow( "openCV Window", 1 );
IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
CvFont font;
double hScale = 1.0;
double vScale = 1.0;
int lineWidth = 2;
cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,
hScale, vScale, 0, lineWidth );
cvPutText( img, "Hello World!", cvPoint( 200, 350 ), &font,
cvScalar( 255, 255, 0 ) );
cvShowImage( "my Window", img );
cvWaitKey();
return 0;
} |
J´ai déclaré mes libs en rajoutant à Project|opencv_qtTestProperties|ConfigurationProperties|Linker|Input|Additional Depencies:
opencv_core231d.lib opencv_highgui231d.lib
Tout se passe bien et le programme fonctionne!
Dans un deuxième temps j´ai fais un programme Qt.
Je génère cette fois-ci un projet avec les Options Visual C++|General et le type "Makefile Project" pour pouvoir me servir de qmake.
Les modifications au code sont minimes et n´ont d´ailleurs rien à voir avec mon problème, puisque la compilation se passe bien, et que le problème est une erreur de lien vers une bibliothèque, mais voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| // main
// AW - 13.03.2012
#pragma warning(disable: 4996)
#include <QApplication>
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main ( int argc, char **argv )
{
QApplication app(argc, argv);
cvNamedWindow( "openCV Window", 1 );
IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
CvFont font;
double hScale = 1.0;
double vScale = 1.0;
int lineWidth = 2;
cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,
hScale, vScale, 0, lineWidth );
cvPutText( img, "Hello World!", cvPoint( 200, 350 ), &font,
cvScalar( 255, 255, 0 ) );
cvShowImage( "Alains Window", img );
cvWaitKey();
return app.exec();
} |
et mon pro:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # opencv_qtTest.pro
# AW - 13.03.2012
######################################################################
# Automatically generated by qmake (2.01a) Di 13. Mrz 22:59:31 2012
######################################################################
TEMPLATE = app
TARGET =
DEPENDPATH +=
INCLUDEPATH += C:\Dev\openCV\openCV2.3.1\build\include\opencv
LIBS += -LC:\Dev\openCV\openCV2.3.1\build\x86\vc9\lib
LIBS += -llibopencv_core231d -llibopencv_highgui231d
# Input
SOURCES += main.cpp |
Le pro reflète donc bien les chemins des includes et des libs, et comporte également le nom des libs à lier.
Malheureusement, cette fois-ci ca ne passe pas, j´obtiens l´erreur suivante:
'LINK : fatal error LNK1104: cannot open file 'libopencv_core231d.lib'
Il trouve donc bien la lib, mais ne peut l´ouvrir. Ce que je ne comprends pas, c´est que dans le premier cas, il a réussi à ouvrir ce fichier!
Je n´ai pas réussi à lever cette erreur, avez-vous une piste?
Merci pour avoir lu mon message.
Alain