WIN7 +Qt5.6.2+opencv3.1.0+Cmake3.7.0编译环境搭建

前言:今年大三了,所以想毕业设计做基于S5PV210上的人脸识别的项目

看了很多相关的帖子和文章 首先是环境的搭建就花费了我许多的时间,也许是人比较笨也不细心,所以前后花了几天的时间,从cmake编译opencv到qt上测试都遇到不少的问题

所以我现在来总结下我的整个配置过程。

在此 ,首先主要感谢作者 http://blog.csdn.net/u014695839/article/details/53130424 。作为主要的参考

本篇博客也在上述作者的基础上修改填补我的内容,谢谢。


-------------------------------------------------------------------------------------------------------------------------------------------------

一、下载Qt5.6.2、CMak/3.7.0和OpenCV3.1.0

全部都在对应官网下载得到:

Cmake下载地址:https://cmake.org/download/

选择


我是解压到E:\Qt\CMake


OpenCV下载地址:http://opencv.org/

点击


我是解压到D:\opencv

打开会自动下载,我用的浏览器是Google Chrome


Qt creator下载地址:https://www.qt.io/

我下载的版本是 qt-opensource-windows-x86-mingw492-5.6.2

我是安装到E:\Qt\Qt5.6.2


二、配置安装环境变量

设置系统的环境变量,以本机为例把E:\Qt\CMake\bin和E:\Qt\Qt5.6.2\Tools\mingw492_32\bin还有E:\Qt\Qt5.6.2\5.6\mingw49_32\bin加入系统的Path环境变量中,因为在CMake编译过程中会用到该目录下的库。(切记:三个路径一定要加!!血泪教训!!)



三、设置源代码目录和生成目录


该部分我的安装路径是:D:/opencv/source

 编译路径是:D:/opencvQT


四、设置编译方式

点击Configure,在弹出的框中选择MinGW Makefiles,并勾选 Specify native compilers,然后点击next



接着配置CC++编译器路径:

E:/Qt/Qt5.6.2/Tools/mingw492_32/bin/gcc.exe

E:/Qt/Qt5.6.2/Tools/mingw492_32/bin/g++.exe

点击finish



五、勾选WITH_QT和WITH_OPENGL项目

这时不会提示任何错误,表明配置成功(如果上一步配置结果有问题,请检查环境变量已经编译方式的设置;假若已经无误,可以尝试重启系统,确保配置的环境变量已经生效)。我们还需要把QT加上,找到WITH,把它下面的WITH_QT和WITH_OPENGL选上,再次Configure。



六、添加QT的目录路径

再次配置会出现以下错误:


点击OK,继续,然后为报错的项添加对应的路径。



QT_QMAKE_EXECUTABLE值为:E:/Qt/Qt5.6.2/5.6/mingw492_32/bin/qmake.exe

Qt5Concurrent_DIR值为:E:/Qt/Qt5.6.2/5.6/mingw492_32/lib/cmake/Qt5Concurrent

Qt5Core_DIR值为:E:/Qt/Qt5.6.2/5.6/mingw492_32/lib/cmake/Qt5Core

Qt5Gui_DIR值为:E:/Qt/Qt5.6.2/5.6/mingw492_32/lib/cmake/Qt5Gui

Qt5Test_DIR值为:E:/Qt/Qt5.6.2/5.6/mingw492_32/lib/cmake/Qt5Test

Qt5Widgets_DIR值为:E:/Qt/Qt5.6.2/5.6/mingw492_32/lib/cmake/Qt5Widgets

添加后结果如下,再次点击Configure。

(该部分大家根据自己Qt的安装路径来即可)

发现还有一个地方未添加路径,与上面类似,为其添加相应的路径:

E:/Qt/Qt5.6.2/5.6/mingw492_32/lib/cmake/Qt5OpenGL


点击Configure:结果我的出现

Looking for unistd.h
Looking for unistd.h - not found
Check size of off64_t
Check size of off64_t - failed
Looking for assert.h
Looking for assert.h - found
Looking for fcntl.h
Looking for fcntl.h - found
Looking for io.h
Looking for io.h - found
Looking for jbg_newlen
Looking for jbg_newlen - not found
Looking for mmap
Looking for mmap - not found
Looking for search.h
Looking for search.h - found
Looking for string.h
Looking for string.h - found
Looking for unistd.h
Looking for unistd.h - not found
Downloading opencv_ffmpeg_64.dll...
CMake Error at cmake/OpenCVUtils.cmake:895 (file):
file DOWNLOAD HASH mismatch

for file: [I:/opencv31/opencv/sources/3rdparty/ffmpeg/downloads/35fe6ccdda6d7a04e9056b0d73b98e76/opencv_ffmpeg_64.dll]
expected hash: [35fe6ccdda6d7a04e9056b0d73b98e76]
actual hash: [39f30deb9d2687b42e7e87b48beadbf9]

Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:15 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:206 (include)
CMakeLists.txt:536 (include)


CMake Error at cmake/OpenCVUtils.cmake:899 (message):
Failed to download opencv_ffmpeg_64.dll. Status=18;"Transferred a partial
file"
Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:15 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:206 (include)
CMakeLists.txt:536 (include)


Configuring incomplete, errors occurred!


类似这种错误的吧,大意就是下载opencv_ffmpeg310.dll这个文件失败

后来我在贴吧http://tieba.baidu.com/p/4488916929找到解决办法:

缺少依赖库:http://download.csdn.net/detail/qjj2857/9663651在这里下载

然后我放在D:\opencv\opencv\build\bin下 (如果原本有就替换掉)



再次点击Configure,如下结果即是完成。然后点击GenerateGenerating done后生成MakeFiles。使用CMake的步骤已经完成,可以关闭窗口。

(切记,我没看到要点击Geberate,结果接下来又不成功了简直要哭好吗?!)



七、编译OpenCV

首先还需要进入D:\opencv\opencv\sources\cmake下打开OpenCVCompilerOptions.cmake这个文件

然后把add_extra_compiler_option(-Werror=non-virtual-dtor)注释掉


进入生成目录D:\opencvQT,在空白处Shift+右键,选择“在此处打开命令窗口”。执行mingw32-make命令进行编译,编译过程需要比较长的时间才能完成。

 


编译完成后,如下图示。然后输入 mingw32-make install 进行安装。这样可用于Qt的opencv库文件就生成了。


八、添加Opencv到Path环境变量

这样编译工作就完成了。
将有用的文件统一保存在一个新的文件夹中这里是D:\opencvQT\necessary_file:
1、D:\opencv安装目录下的build\include目录
2、D:\opencvQT\bin
3、D:\opencvQT\lib
4、最后再添加一个环境变量到Path:D:\opencvQT\necessary_file\bin

就是跟上面那些环境变量全部加到一个Path里面就好 ,用;隔开


九、配置Qt Creator工程文件(.pro文件)

新建一个QT工程,在.pro文件中添加如下内容:

[cpp]  view plain  copy
  1. INCLUDEPATH+=D:\opencvQT\necessary_file\include\opencv\
                   D:\opencvQT\necessary_file\include\opencv2\
                   D:\opencvQT\necessary_file\include\
     
    LIBS+= -L D:\opencvQT\necessary_file\lib\libopencv_*.a


新建一个源文件,添加如下代码:

main[cpp]  view plain  copy
  1. #include<QCoreApplication>
    #include<iostream>
    #include<opencv2/core/core.hpp>
    #include<opencv2/highgui/highgui.hpp>
    using namespace std;
    using namespace cv;
     
    int main(void)
    {
       //QCoreApplicationa(argc,argv);
       //returna.exec();
       cout<<"opencv"<<endl;
       cv::Mat src=cv::imread("E:/Qt/image/3.jpg");  //绝对路径
       cv::namedWindow("test");
       cv::imshow("test",src);
       cv::waitKey(0);
       cv::destroyWindow("test");
       return 0;
    }
记得main.cpp该路径用/而不用\,否则会报错

若出现以下结果,则qt+opencv配置成功!以后如果要在qt中使用opencv,则只需要在.pro文件中添加之前添加的内容即可。




最后终于出现我的南笙女神啊,我真是感动得痛哭流涕哭哭

总结:我在配置过程中真的遇到很多的问题,但是只要不断在网上找总能找到答案的,哪怕把它放两天再来弄也不要轻易放弃!

接近期末了,我也不知道下一篇博客是什么时候,打算今年寒假来大搞哈哈,有什么疑问大家可以一起交流讨论,谢谢~~~~~



猜你喜欢

转载自blog.csdn.net/a249093278/article/details/53304259