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
本着记录生活、传播发现的精神在此进行记录,也是为互联网这滔滔大河的一撇分支,注入一丝活水。
------------------------------------------------------------------------------------------
各项版本参数
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
相关文章推荐
- Qt登录对话框
- Qt只能运行一个实例的3种方法
- 创建动态链接库,使用自己的dll中的排序算法,用Qt将排序用时在界面上用表格的形式呈现出来
- QT发布的EXE打包压缩成单文件
- Qt 文件搜索(写入文本文件)
- QT5的QDesktopSerivices不同
- Qt绘制系统(Paint System)
- QT系列教程
- QT第二天学习
- 自定义圆形QLabel控件
- Qt Creator在Windows上的调试器安装与配置
- Qt之QRoundProgressBar(圆形进度条)
- Qt之QRoundProgressBar(圆形进度条)
- Qt之QRoundProgressBar(圆形进度条)
- qt5实现tftp和ftp的方法之五:使用Qtftp实现ftp的方法
- qt5集成libcurl实现tftp和ftp的方法之四:实现ftp文件上传和下载
- QT实现QQ界面
- QT学习之路————使用QT自带的QSqlDatabase类简单操作sqlite数据库
- 一次失败的QThread多线程加载Webpage.load()页面的尝试
- Qt之绘制闪烁文本