您的位置:首页 > 编程语言 > Qt开发

OpenCV配置于Qt软件

2016-07-20 08:05 585 查看
对于网络上众多教程,笔者在其中收获良多。但同时也发现其内容单一、彼此抄袭、以拆东墙补西墙之现况。

本着记录生活、传播发现的精神在此进行记录,也是为互联网这滔滔大河的一撇分支,注入一丝活水。

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

各项版本参数

System: Microsoft Windows 10 专业版64位

OpenCV: OpenCV-3.1.0版

Qt: Qt-5.6.1 Community版

CMake: Cmake-3.6.0版

<本博客使用软件均为目前最新版本>

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

在OpenCV包中,已经包含了build文件夹,在其中有官方编译好的头文件以及动态链接库、静态链接库等。但IDK千千万,官方不可能将所有对应的文件发布出来。就拿OpenCV-3.1.0来说,其仅仅发布了×64位版本中的vc12版和vc14版。而没有发布VS2010对应的vc10版。说了这么多,笔者想告诉你们的是:想要用的得心应手,必须使用OpenCV源码结合CMake工具来制作对应的链接库和头文件。

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

操作步骤如下:

步骤一:安装需要的各个软件,包括Qt、CMake、以及解压缩OpenCV

步骤二:各个软件安置已经安置好,开始cmake。

步骤三:命令行编译编译及安装

步骤四:IDK与链接库头文件的连接

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

----------------------------步骤一-------------------------

分别进行Qt和CMake的安装和OpenCV安装包的解压缩





OpenCV库在解压缩之后会在H:\盘中生成文件夹“opencv”,打开进入可以看到:



我们需要的源码都在“sources”文件夹中,需要注意的是“sources”文件夹中有一个“CMakeLists.txt”的文件,它向CMake软件提供了必要的信息,所以这就提醒我们,进行cmake操作的就是在此文件夹下。



最后笔者再于H:/根目录下新建文件夹“OpenCV_QT”用来保存cmake之后的数据。

[b]----------------------------步骤二-------------------------[/b]

可能到这里,你觉得需要设置环境变量了,因为其他教程都是这样要求设置编译器的路径什么什么的。但这里笔者建议不要设置环境变量,因为根据经验,很多错误就是由于环境变量所引起的。我们需要什么就手工指定其路径,不要依靠变量中的路径。

但是在考虑到一个问题:即使手工指定编译器路径,也仅仅是指定了例如:gcc.exe和g++.exe两个文件,其运行的相关项也并没有给出,往往会导致出现缺少“libwinpthread-1.dll”诸如此类的错误。所以,这里笔者给出的操作方式是:设置环境变量,注销,cmake时手工指出所用的编译器路径,双重保险。

同时,接下来笔者会向大家展示一个比较常见的错误,及其解决方法。

我们来看一下H:/盘中现在的情况。



左侧为OpenCV解压缩之后的源码;右侧文件用于盛放cmake中间结果。
打开CMake,设置“Where is the source code”和“Where to build the binaries”。认真观察下图就能发现,文件夹正是上图的两个文件夹。



然后点击左下方的Configure按钮。进行第一次Configure。



出现编译器选择对话框。由于我们选用的Qt软件的编译器是MinGW,所以,下拉框中我们选择MinGW Makefiles选项。
同时由于笔者在第一步并没有设置环境变量,所以这里的单选按钮,选择第二项“Specify native compilers”,来进行手动指定编译器。
单击“Next”之后进入手工指定编译器路径。



需要说明的是,我们Qt的安装地址是“H:\Qt”文件夹中,所以对应的编译器,笔者找到是在路径“H:\Qt\Qt5.6.1\Tools\mingw492_32\bin”文件中。



C编译器对应gcc.exe;C++编译器对应g++.exe
所以才有了前面的一幕:



在Compilers组框中C对应的是:“H:/Qt/Qt5.6.1/Tools/mingw492_32/bin/gcc.exe”,C++对应的是“H:/Qt/Qt5.6.1/Tools/mingw492_32/bin/g++.exe”,Fortran对应选项不填。
在这里会遇到一个错误,往往是由于网络不通畅导致的。因为在cmake时,缺少文件或者文件Hash值不对时会进行网络下载缺少的东西。网络不同或者网速较慢都可能导致cmake失败。这里举一个例子,点击Configure按钮之后。



发现其中的文件opencv_ffmpeg.dll文件Hash与期待的不一致,所以“Downloading opencv_ffmpeg.dll”通过网络进行重新下载。如果下载成功就会继续cmake,否则将会终止并报错。
笔者重新解压一份OpenCV源码,与cmake成功的进行对比,发现了区别。



多了一份下载数据,打开“downloads”:



三个文件名即CMake软件所期望的Hash值,打开之后里面依次是:“opencv_ffmpeg_64.dll”、“opencv_ffmpeg.dll”、“ffmpeg_version.cmake”
说了这么多,只有一句话:CMake的时候请保持网络通畅,并且保持一定速度。

经过两次Configure和一次Generate,笔者得到了Cmake之后的部分,这时候还不能称之为定制的链接库或者源码库,还需要使用IDK所对应的编译器进行编译和安装。

[b]----------------------------步骤三-------------------------[/b]
进入cmd命令行窗口,输入“cd /d H:\OpenCV_Qt\”,进入“Where to build the binaries”指定的目录下。
输入“mingw32-make”,便会开始进行make操作,此操作持续时间较长。耐心等待。



输入“mingw32-make install”。这部分比较快。
完成之后,打开OpenCV_Qt文件夹,寻找“install”文件夹,内有我们所需要的一切。
----------------------------步骤四-------------------------

打开“install”文件;



头文件在“include”文件夹中,链接库在“×86”文件夹中。由于Qt软件的特殊性,使得将OpenCV整合到Qt上的步骤非常简单。
1.设置环境变量Path = “H:\OpenCV_Qt\install\x86\mingw\bin”,注销。
2.打开Qt,新建空白工程。在pro文件中添加如下语句:
INCLUDEPATH += H:\Qt_OpenCV\install\include\

H:\Qt_OpenCV\install\include\opencv

H:\Qt_OpenCV\install\include\opencv2

LIBS += H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_calib3d310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_core310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_features2d310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_flann310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_highgui310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_imgcodecs310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_imgproc310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_ml310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_objdetect310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_photo310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_shape310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_stitching310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_superres310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_ts310.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_video310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_videoio310.dll.a\

H:\Qt_OpenCV\install\x86\mingw\lib\libopencv_videostab310.dll.a\
将头文件包含进去,并将链接库连接了起来。

--------------------------[b]----[/b]测试-----[b]----------------------[/b]

新建空白工程,在main.cpp中编写测试代码,如下:



运行,出现图片,证明成功了。



------------------------------附加---------------------------

CMake软件下载地址:https://cmake.org/download/

Qt软件下载地址:https://www.qt.io/download/

OpenCV安装包下载地址:http://opencv.org/

步骤四对应的编译好的文件,笔者放到了云盘之中,方便读者舍去繁琐的编译过程,可直接执行步骤四,方便配置。地址为:链接:http://pan.baidu.com/s/1eShqEsE 密码:uxh7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: