2013-06-20 44 views
2

我正在使用Qt 5.0.2并尝试开始使用OpenCv。Qt与OpenCv什么都不做

如果我运行下面的程序,它只显示一个控制台,并说按任何键,但它没有显示图像。我甚至没有得到qDebug()消息。

但是,随着Opencv的东西被删除,我得到的消息。

PS:是的,我确定Desert.jpg位于exe文件所在的文件夹中。 first-openCV-test.pro:

QT  += core 
QT  -= gui 
TARGET = first-openCV-test 
CONFIG += console 
CONFIG -= app_bundle 
TEMPLATE = app 
SOURCES += main.cpp 
INCLUDEPATH += F:\\QT\\libraries\\opencv\\opnecv_build_2.4.5\\install\\include 
LIBS += -LF:\\QT\libraries\\opencv\\opnecv_build_2.4.5\\install\\lib \ 
    -lopencv_core245.dll \ 
    -lopencv_highgui245.dll \ 
    -lopencv_imgproc245.dll \ 
    -lopencv_features2d245.dll \ 
    -lopencv_calib3d245.dll 

main.cpp中:

#include <QDebug> 
#include <QCoreApplication> 

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 


int main(int argc, char *argv[]) 
{ 
     // read an image 
     qDebug()<< "start initialising"; 
     cv::Mat image= cv::imread("Desert.jpg"); 
     // create image window named "My Image" 
     qDebug()<< "name Window"; 
     cv::namedWindow("My Image"); 
     // show the image on window 
     qDebug()<< "show image: "; 
     cv::imshow("My Image", image); 
     // wait key for 5000 ms 
     qDebug()<< "wait"; 
     cv::waitKey(5000); 
     return 1; 
} 

/////////////////////// ////////////////////////////////////////////////// /////////////////

感谢您的快速解答。

我尝试了一些东西,并重建所有并重新下载它。我改成了这一点:
QT + =芯 QT - = GUI TARGET =第一测试 CONFIG + =控制台 CONFIG - = app_bundle TEMPLATE =应用 SOURCES + = main.cpp中

INCLUDEPATH += "F:/QT/libraries/opencv/build/include" \ 
       "F:/QT/libraries/opencv/build/include/opencv" \ 
       "F:/QT/libraries/opencv/build/include/opencv2" 

LIBS += -L"F:/QT/libraries/opencv/build/x86/mingw/lib" 
    -libopencv_core245.dll 
    -libopencv_highgui245.dll 
    -libopencv_imgproc245.dll 
    -libopencv_features2d245.dll 
    -libopencv_calib3d245.dll            

但现在我得到以下错误:

F:\ A_PROJECTS \ OPEN-CV \先检测\先检测\ main.cpp中:-1:Fehler:未定义的引用`CV :: fastFree(无效* )'

F:\ A_PROJECTS \ OPEN-CV \ first-test \ first-test \ main.cpp:-1:Fehler:未定义引用到`cv :: Mat :: deallocate()'

+0

感谢您的快速解答。 – user2505961

回答

1

我不确定如果这会帮助你,但让我们给一个尝试...

首先,在我的节目我用,而不是“\\”酒吧“/”。 第二,我从来没有把.dll放在libs上。我用的是这样的:

LIBS += -LC:/OpenCV/lib/ -llibopencv_core245 -llibopencv_highgui245 -llibopencv_imgproc245

尝试做这些更改,然后“运行的qmake”和“重建所有”,如果您使用的是qtcreator。

1

确保成功加载图像:

cv::Mat image= cv::imread("Desert.jpg"); 
if (image.empty()) 
{ 
    // print error message 
    return -1; 
} 

我写了一个名为cvImage一个简单的OpenCV/Qt的样本项目这表明how to configure a .pro文件,以使他们一起工作。