由于在做研究生毕业论文,需要用到QT+opencv进行编程。在网上看了一下,有很多介绍配置的方法的文章,大致有两种,一种是需要对opencv进行编译,这种方法看上去太复杂了,我连尝试一下的想法都没有;另一种是直接引用库函数(原理我也不懂,感觉是这个意思),配置起来非常简单,我选择的配置方法是第二种。虽然第二种方法只有三四步的过程,网上也有很多教程,但是在我实际配置的过程中,遇到了很多麻烦,本来几分钟搞定的事情,我花了几天才完成,中途一度有过放弃。这里简单介绍一下配置方法,提点一下特别需要主要的细节。
首先说一下电脑配置,我的是win10,64位系统。
1.首先就是下载和安装QT和opencv。
这里特别需要注意QT的版本,我下载的是qt-opensource-windows-x86-msvc2013_64-5.5.1版本的,特别需要注意的是我使用的是msvc版本。我以前也用过QT,估计很多人都习惯用mingw48版本的,我开始的时候用mingw48版本,随便怎么都配置不好,最后在一篇博客上才看到mingw48版本的貌似需要对opencv进行编译,就是很复杂的那种配置方法。我的QT放在E盘,opencv放在D盘。
我的opencv的版本是2.4.10。至于下载地址我就不贴了,网上到处都是。
2.安装完成后将opencv和QT的bin的路径写入环境变量Path。至于不写能不能成功,我也没试过。
3.打开QT,创建一个项目,在.pro文件中加入opencv路径代码,
INCLUDEPATH += d:\opencv\build\include\
INCLUDEPATH += d:\opencv\build\include\opencv\
INCLUDEPATH += d:\opencv\build\include\opencv2\
CONFIG(debug,debug|release) {
LIBS += -Ld:\opencv\build\x64\vc12\lib \
-lopencv_core2410d \
-lopencv_highgui2410d \
-lopencv_imgproc2410d \
-lopencv_features2d2410d \
-lopencv_calib3d2410d
} else {
LIBS += -Ld:\opencv\build\x64\vc12\lib \
-lopencv_core2410 \
-lopencv_highgui2410 \
-lopencv_imgproc2410 \
-lopencv_features2d2410 \
-lopencv_calib3d2410
}
将原来的main.cpp文件内容改为:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("test.jpg");
if(img.empty())
{
fprintf(stderr,"Error: load image failed.");
return-1;
}
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image", img);
waitKey();
return 0;
}一般网上的文章到这里就结束了,就可以运行了。但是 还是有很多人会像我一样,出现找不到库函数的情况。(本来想截个图,但是成功一次后就回不到失败的状态了。。。所以去网上随便找了个报错的图)大概意思就报错,找不到2410什么的
最重要的一步就是下面一步,害的我中途都放弃这种配置方法了。
4.点击构建->执行qmake,然后重新构建项目。最后就能成功运行程序了。
所以总结起来一共有两个地方需要特别注意的:
1注意QT版本,选择mscv版本;
2主要执行qmake,重新构建项目。
最后说几句,本文说了我一度放弃使用这种配置方法,选择使用了QT+VS2013+opencv的方法进行编程。因为我以前已经配置好了vs2013+opencv,只需要配置QT+VS2013就行了,其方法非常简单,网上很多,我一次就成功了。但是在编程的过程中发现,QT+VS2013使用的是QT designer,与QT creator还是有所区别的,比如没有转到槽(go to slot)这个功能。所以最后迫不得已继续研究了下怎么配置QT+opencv。至于配置的原理,我几乎不懂,只要能用就行。