2017-2-23 Update: 修改并添加了部分细节
最近正在学习OpenCV ,为毕业设计做准备。Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教程详细描述了配置步骤。但在使用Qt Creator时的配置就较为繁琐,网络上大多数教程使用的软件版本也比较陈旧,经反复尝试后终于成功,特将配置步骤记录下来,以便以后及他人查阅参考。
我将编译好的库文件上传到了云盘中,如果你的开发环境与我相同,可以在最下方直接下载。
1. 前期准备
本机环境及使用软件:
- Windows 7 64位
- OpenCV 3.1.0 : https://sourceforge.net/projects/opencvlibrary/files/ (3.2.0也适用)
- Qt 5.7.0 : http://www.qt.io/ or http://download.qt.io/
- MinGW 5.3.0 : 包含在Qt中,无需单独下载。
- CMake 3.7.2 : https://cmake.org/
另外:本机中还安装了VS2015,它的影响会在下文中提及。
首先,建议上述所有软件的安装路径都不要包含中文或空格 。
OpenCV 目前(2017.2)最新版本为3.2.0。安装OpenCV其实就是解压,尽量解压在某盘根目录或较短的目录下,我们只用其中的“sources”文件夹。对于本文来说,因为需要重新编译源码,也可以只到github上下载源码: https://github.com/opencv/opencv 。
Qt 目前最新版本为5.8.0。鉴于国内网络环境,建议下载离线版。关于Qt的安装与配置,可在另一篇博客中查看(未完成),安装过程中要勾选安装MinGW。本人使用的版本为: qt-opensource-windows-x86-mingw530-5.7.0 。
CMake主要用来生成Makefiles,与MinGW中的编译器配合使用。安装过程中注意勾选“为所有用户添加环境变量”:Add CMake to the system PATH for all users 。
确保上述软件安装好之后,可进行下一步操作。
2. CMake中的操作
打开CMake (cmake-gui)。
第一行源代码位置,选择 ..\opencv\sources 文件夹,如:D:\opencv\sources 。
第二行是编译输出的目录,建议放在某盘根目录或较短的目录下,如 D:\opencv_mingw 。
点击configure,在弹出窗口的下拉列表里选择MinGW Makefiles,选项选择Specify native compilers,点击Next;
注:因为本机中安装了VS,如果选择第一项“适用默认本地编译器“,会使用VC编译器。而我们需要为Qt使用mingw的编译器,因此需要手动指定编译器。如果读者也安装过VS,则需注意这个问题。
指定编译器,在Qt自带的MinGW的目录下:
- C 编译器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/gcc.exe
- C++编译器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/g++.exe
- Fortran不用填写
点击finish,此过程必须联网,因为需要下载几个文件。
等待一会儿后,会有一堆红色出现,无需担心。找到并勾选WITH_QT,如果要用OpenGL的功能可以勾选WITH_OPENGL,不能勾选WITH_IPP(默认不勾选)
有的教程上说要在CMAKE_BUILD_TYPE处添加“Debug” ,不添加也不影响。
再次点击configure,若还有红色出现,再点击configure直到红色消失。
点击Generate按钮,完成后即可关闭CMake。
3. cmd下的操作
首先必须在环境变量中添加mingw的目录:C:\Qt\Qt5.7.0\Tools\mingw530_32\bin
打开cmd,转到用CMake生成的目录,如: cd /d D:\opencv_mingw
小提示:除了cd命令,还可以在要转到的目录下按住shift同时右键,点击“在此处打开命令窗口”。
之后输入 mingw32-make , 之后就开始漫长的等待。。。
[100%] 后输入 mingw32-make install ,稍等即可。
4. 精简编译好的库文件
编译完成后会发现目标文件夹有一个多G大小,无需担心,我们只需要其中的一部分。
网上很多教程都说要:[保留“bin”、“lib”文件夹,再将原始OpenCV库中的“include”拷贝过来]。这里与其他教程不同的是,我建议只保留 install 文件夹,其他都可以删除。
详细解释如下;观察install目录结构:
小技巧:想生成目录结构到txt文件,可在cmd中转到某目录,输入tree /f > list.txt。
其中,etc中包含两类已经训练好的分类器,分为Haar特征和LBP特征,可以用在人脸识别等程序中;include中是需要的头文件;x86/mingw中则包含bin和lib两个文件夹,其中分别是动态链接库和静态链接库。因此install中已经包含了所有需要的文件。
而install/x86/mingw中的bin和lib与上层目录中的bin和lib有什么区别呢?观察可以发现,install中的bin和lib中少了很多文件名中有“pref”和“test”的文件,这些文件实际上是不需要的。因此只保留install文件夹是最不浪费空间的做法。
删除其他无用的文件夹后,我们所需的库文件只有62.3 MB,压缩一下只有14 MB,这已经很小了。我将制作好的库文件上传到了云盘中,需要的话可以在最下方下载。
5.Qt Creator 中工程文件的配置
首先将编译好的库添加进环境变量,如 D:\opencv_mingw\install\x86\mingw\bin ,如不添加则会出现程序编译通过但运行时提示“程序异常结束”的问题。
小提示:每次添加或删除环境变量后,都要重启Qt Creator才能生效。
打开Qt Creator,新建工程或者在已有工程文件中打开.pro文件,添加包含头文件的语句:
INCLUDEPATH += D:\opencv_mingw\install\include
接下来,如果你想使用动态链接库,则再添加:
LIBS += D:\opencv_mingw\install\x86\mingw\bin\libopencv_*.dll
而如果你想使用静态连接库,则要添加:
LIBS += D:\opencv_mingw\install\x86\mingw\lib\libopencv_*.a
这里都是使用了“*”包含了所有的链接库,如果想只用一部分则可以这样输入:
LIBS += D:\opencv_mingw\install\x86\mingw\bin\libopencv_calib3d320.dll \
libopencv_core320.dll \
...
小提示:带空格的库路径是不能直接使用的,需要按如下格式输入:
INCLUDEPATH += $$quote(D:\Program Files\opencv_mingw\install\include)
LIBS += -L $$quote(D:\Program Files\opencv_mingw\install\x86\mingw\bin\libopencv_*.dll)
在工程上右键点击执行QMake 。
之后进行正常的编译运行即可。
6. 示例程序
网络上的教程到最后示例程序这一步时,很多都是将Qt的原有结构删除,直接给一个opencv的简单程序就完事儿,一般都是显示一张图片。
我这里高级一点,给一个调用摄像头并显示图像的简单示例。这个程序摘自毛星云(浅墨)的《OpenCV3编程入门》。
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
//【1】从摄像头读入视频
VideoCapture capture(0);
//【2】循环显示每一帧
while(1){
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture>>frame; //读取当前帧
imshow("video",frame); //显示当前帧
waitKey(30); //延时30ms
}
return 0;
}
如果配置正确而且用的是笔记本,应该会出现自己的脸。这时可以用鼠标滚轮放大缩小一下看看效果:
但是,如果不去利用Qt设计界面的便捷特性,只是使用Qt Creator这个IDE写着跟VS下一样的程序,有什么意义呢?
所以我想提供一个让OpenCV 与Qt 结合使用的例子,示例程序可以参看我翻译的几篇国外网站上的[OpenCV Qt教程] !
编译好的库文件:http://pan.baidu.com/s/1c2MNJ9I
本人在配置过程中主要参考了以下两篇文章。
http://*.com/questions/15881913/how-to-link-opencv-in-qtcreator-and-use-qt-library
http://blog.csdn.net/qq_28839293/article/details/52230111
Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置的更多相关文章
-
【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨 ...
-
安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧.来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装.与其说是 ...
-
windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置
http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...
-
【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置
图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...
-
【Objective-C】Windows下Objective-C开发环境配置
[Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/ 最近打 ...
-
windows下spark开发环境配置
http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...
-
windows下Qt5.1 for android开发环境配置(PS:Qt5.2出来了哈,稳定)
说明:以下开发环境配置过程参考了这些文章: http://qt-project.org/wiki/building_qt-android_on_windows http://www.hyarm.com ...
-
Metabase在Windows下的开发环境配置
Metabase在Windows下的开发环境配置 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} Metabase在Wind ...
-
开发环境配置--Ubuntu+Qt4+OpenCV(一)
同系列的文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV( ...
随机推荐
-
战胜忧虑<;1>;——不要让忧郁侵入你的生活
1.不要让忧郁侵入你的生活. 备注:忧郁:一种情绪与心理状态,指一个人呈现哀伤.心情低落的状况,绝望与沮丧为其特色. 解决方法:奥斯勒博士说的那样:用铁门把过去和未来隔断,生活在完全独立的今天. 现在 ...
-
Qt学习之路(2)------Qt中的字符串类
QString QString的一些基本用法 basic.cpp #include <QTextStream> int main(void) { QTextStream out(stdou ...
-
jquery获取多个checkbox的值异步提交给php
html代码: <tr> <td><input type="checkbox" name="uid" value="&l ...
-
SPPS java 创template
最近写信给学校一个部门java plug for spss. 当加到变量超过70个月,然后保存,SPSS它会在错误的地方报. 解决方案: 每添加70提交变量. 版权声明:本文博主原创文章.博客,未经同 ...
-
UWP--数据绑定的几种方式
1.后台代码: 2.后台定义属性,前台XAML 中绑定: 3.XAML 中定义资源并应用(资源中自定义对象): 4.用元素值绑定:
-
ogg12c_静默安装
1.上传压缩包:123010_fbo_ggs_Linux_x64_shiphome.zip 2.解压: unzip 123010_fbo_ggs_Linux_x64_shiphome.zip 3.配置 ...
-
ajax实现给JavaScript中全局变量赋值(转)
原文地址:ajax实现给JavaScript中全局变量赋值 问题简化: <script type="text/javascript"> var a=1 ; functi ...
-
基于Java IO 序列化方案的memcached-session-manager多memcached节点配置
在公司项目里想要在前端通过nginx将请求负载均衡,而后台的几组tomcat的session通过memcached(non-sticky模式)进行统一管理,这几组tomcat部署的web app是同一 ...
-
fatal error: openssl/evp.h: 没有那个文件或目录
在陆佳华<嵌入式系统软硬件协同设计实战指南 第2版>一书的第13章节 编译U-boot时会遇到2个错误.原因很简单,就从一开始的错误提示着手: fatal error: openssl/e ...
-
Eclipse 中 ctrl+鼠标左键 快捷查看资源失效
Eclipse 中 ctrl+鼠标左键 快捷查看资源失效 看看eclipse 工作空间配置的jdk是什么版本,看看本地环境变量中的jdk是什么版本,将二者的版本统一即可. 笔者从git上clone一个 ...