Win7下Qt532+MinGW482+OpenCV249+Cmake302编译环境搭建

作为新手第一次接触cmake与Qt,不得不说opencv的编译配置之路相当曲折啊,希望大家有耐心。

之前安装完Qt之后,新建了Qt控制台应用程序,尝试过直接添加工程文件.pro下的opencv的包含目录和库目录,但是测试程序一直出毛病,几乎把安装的所有编译器都试完了,最后又出现模块计算机X86与目标计算机x64冲突,换了编译器,修改n次坏境变量加重启也没效果,所以无奈放弃了,又重拾昨天Cmake编译opencv库的办法,虽然昨天一直没成功。

下面就正式说win7下配置OPENCV的Qt环境开发

下载所需工具

(1)  opencv2.4.9,大家不要下载新版3.x,因为有很多东西不一样,所以容易出错。官网为http://opencv.org,当时好像下载一直出错,等注册成用户了才成功了,呵呵,不解释。点击opencv for windows,新界面上会有Looking for the latest version? Downloadopencv-2.4.9.exe (365.7 MB),这句话,2.4.9就在这里了,你也可以点击主页右上角的fork me on Github,直接下载源包。

(2)  Qt,我下载的是最新版,5.3.2,因为后来程序出错x64与x86冲突,删了N次了,不管你的win7系统是几位的,所以直接下载这个

进行在线安装,就别点那个Show DownLoads了,如果你是高手直接知道下哪个的话,我就不说什么了。

(3)  cmake的下载地址为http://www.cmake.org/download/,windows用户直接下载其一就行(不管系统几位):

安装:

Opencv如果你下载的是opencv2.x.exe,直接打开就自动解压了,如果你下载的是源包,那就直接用源包就可以了。两者的区别是.exe是人家给你预先编译了,你直接能用,不过东西还是原装的好哈!

Qt的安装,打开之后到了那个组件选项,点5.3,tool就可以了,5.3下还有很多,上面都是编译器,大家可以自己选,不过MINGW4.8.2还是必须要的,我记得有msvc201X的编译器,这就看你们的VS用的什么版本了,感觉还是选上吧,以后你可能用到VS与Qt集成搭建,还有MSVC201X openGL,官网说是专门处理图形的,你们自己看看官网吧,winphone和android arm如果你们做这方面的开发就勾选了,tools下的MiNGW也是必须要的,那个cloud随你们意愿了。(别嫌我啰嗦哈!)

Cmake的安装还是要注意下的,安装过程不能有中文或者括号字符,不能有空格,其中有一个安装步骤,让你勾选,勾选那个加入到计算机环境变量中。

下面的步骤要感谢下http://blog.csdn.net/zhaocj/article/details/38944037,赵春江老师的专栏,在我山穷水尽要放弃的时候,是这篇博客帮了大忙,所以发现CSDN还是蛮强大的,在这里要借鉴下博客的内容。

首先要设置环境变量,因为我们用的是mingw来编译,所以要将D:\Qt5.3\Tools\mingw482_32\bin加入到path下,注意切换到英文模式。

点击CMake(cmake-gui)图标,执行CMake,在Where is the source code栏和Where to build thebinaries栏中分别为d:/opencv/sourecesd:/opencv/MinGWd:/opencv/MinGW为编译后库文件所存放的目录,需要自己创建该目录。然后点击configure按钮,打开新的窗口,在Specifythe generator for this project下选择MinGWMakefiles,然后选择Specifynative compilers,点击Next按钮,打开新的窗口,在C一栏中填写C:/Qt/Qt5.3.1/Tools/mingw482_32/bin/gcc.exe,在C++一栏中填写C:/Qt/Qt5.3.1/Tools/mingw482_32/bin/g++.exeFortran不填写,然后点击Finish按钮,开始配置,这里你们可以对比一下博客,因为我并没有出现博客上说的错误,而是一大堆警告,也没有找到博客中NameCMAKE_MAKE_PROGRAM的一项,继续勾选WITH_QT与WITH_OPENGL,再次configure,我只出现了QT_QMAKE_EXECUTABLE not found 的警告,在后面路径中找到你的qmake,我的路径为D:\Qt5.3\5.3\mingw482_32\bin,在bin目录下,再次configure,会出现Qt5Concurrent_DIRQt5Core_DIRQt5Gui_DIRQt5Test_DIRQt5Widgets_DIRQt5OpenGL_DIR  not found

的警告,这些lib均在D:\Qt5.3\5.3\mingw482_32\lib\cmake\的目录下,你们要一一选中,再次configure,这次会出现一大堆的警告,不要管这些警告,直接generate。(昨天我遇到的就是这个问题,当时不知道怎么解决,不过后来自己解决了,在这里其实Qt的帮助文档有提示:网址http://qt-project.org/doc/qt-5/cmake-manual.html,原话是In order for find_package to be successful, Qt 5 must be found below theCMAKE_PREFIX_PATH, or the Qt5<Module>_DIR must be set in the CMake cache to the location of the Qt5WidgetsConfig.cmake file. Theeasiest way to use CMake is to set the CMAKE_PREFIX_PATH environment variable to theinstall prefix of Qt 5)现在Cmake可以关闭了。

输入cmd,打开系统命令行终端,进入到d:/opencv/MinGW的目录下(怎么进入别的盘的命令不会的可以百度。)执行mingw32-make命令,这会需要很长时间,而且在这有时很容易出错,昨天我就是在这纠结的,因为参考的是(http://blog.csdn.net/qiurisuixiang/article/details/8665278?reload#reply)的帖子,版本不一样,所以一直编译不成功,这一回我在编译到92%的时候由于进入屏保,结果提示cmd命令错误,我又输了遍mingw32-make命令,结果接着编译,成功了。最后提示build target opencv transcode之后,接着输入mingw32-make install,完事之后关闭命令行即可。

下面开始配置opencvQt开发环境。

其实我们需要的只是编译后MINGW目录下的binlib文件夹,不过别的文件你删不删无所谓。再次添加系统的环境变量D:\Qt5.3\5.3\mingw482_32\binD:\opencv\MinGw\bin

今后我们在用Qt创建opencv工程的时候,都要在工程名称.Pro上添加以下目录和库。

INCLUDEPATH+=d:\opencv\build\include\

                d:\opencv\build\include\opencv\

                d:\opencv\build\include\opencv2

 

 

LIBS+=d:\opencv\MinGw\lib\libopencv_calib3d249.dll.a\

    d:\opencv\MinGw\lib\libopencv_contrib249.dll.a\

    d:\opencv\MinGw\lib\libopencv_core249.dll.a\

    d:\opencv\MinGw\lib\libopencv_features2d249.dll.a\

    d:\opencv\MinGw\lib\libopencv_flann249.dll.a\

    d:\opencv\MinGw\lib\libopencv_gpu249.dll.a\

    d:\opencv\MinGw\lib\libopencv_highgui249.dll.a\

    d:\opencv\MinGw\lib\libopencv_imgproc249.dll.a\

    d:\opencv\MinGw\lib\libopencv_legacy249.dll.a\

    d:\opencv\MinGw\lib\libopencv_ml249.dll.a\

    d:\opencv\MinGw\lib\libopencv_objdetect249.dll.a\

d:\opencv\MinGw\lib\libopencv_video249.dll.a

到此就结束了,库的添加自己可以按照库目录自己选择那些必须的,以后用到别的再选择添加,这里添加还有别的简洁语法,自己可以百度。-L与-l。写个小程序,测试一下吧。

#include<QCoreApplication>

#include<opencv2/core/core.hpp>

#include<opencv2/highgui/highgui.hpp>

intmain()

{

   cv::Matimage=cv::imread("E:\\a.tif");

   cv::namedWindow("Myimage",CV_WINDOW_AUTOSIZE);

   cv::imshow("Myimage",image);

   cv::waitKey(0);

   cv::destroyWindow("Myimage");

   return0;

}

猜你喜欢

转载自blog.csdn.net/zj573453769/article/details/39856825