暑假才过了两周就已经结束了,被导师催回来干活。手头的项目就是当时毕业设计的改进和扩充,8月底需要完成初始版本的验收。当时做毕设没有过多考虑界面的问题,图省事就用了MFC,现在看来简直吃藕得不忍直视。因此决定用Qt重写整个程序,便于以后美化界面风格,让客户看着顺眼些。
OpenCV的配置网上一搜一大把,但是由于需要用到KCF跟踪算法,因此要编译一下contrib库。contrib是OpenCV开源社区最新贡献但不是完全成熟的函数库,我们要通过其中的Tracker类来调用跟踪算法。
Qt在Windows环境下有两种编译方式,MinGW和msvc。msvc就是微软的VC运行库,只要安装了Visual Studio就自带了,在编译速度上比较有优势。缺点是,采用msvc编译的话,需要单独安装cdb调试工具,才能在Qt中进行单步调试,下文详谈。
由于这两个原因,整个配置过程比较繁杂,踩了无数坑,在这里做个总结整理,记录一下以免遗忘。
第一步:OpenCV编译与配置
1、下载OpenCV 3.1.0和contrib库,以及CMake编译工具
OpenCV3.1.0 http://opencv.org/downloads.html
解压并安装至任意位置,例如D:\OpenCV310
contrib https://github.com/opencv/opencv
将得到的opencv_contrib-master.zip文件解压至任意位置
2、生成解决方案
打开CMake工具
where is the source code中填入下载的OpenCV 3.1.0解压之后的路径,定位到opencv/sources下;
where to build the binaries任意指定位置,例如D:/contrib
点击Configure,选择对应的Visual Studio版本,其余默认
配置完成后,在OPENCV_EXTRA_MODULES_PATH中填入下载并解压的opencv contrib-master\modules,点击Generate生成解决方案。如果配置失败,删干净之后重试几次。
3、编译生成dll和lib
生成解决方案成功之后,在自定义的生成文件夹下找到OpenCV.sln,用Visual Studio打开
找到解决方案资源管理器,右击INSTALL,点击生成
注意要在debug和release模式下分别生成一次
第二步 配置Qt开发环境
1、下载Qt for Windows MSVC2015 64-bit 可在资源合集中找到
可以先注册一个Qt账号以便使用
2、安装完成之后,打开Qt Creator新建工程目录,打开***.pro工程文件,添加INCLUDEPATH和LIBS,文件路径如图所示。具体代码见资源合集中的Test.pro
3、配置系统环境变量
右击此电脑——属性——高级系统设置,在系统变量Path中加入刚才编译好的dll路径,例如D:\contribute\install\x64\vc14\bin
图中是Win10的添加方法,Win7需要直接添加在Path字符串后面,方法自行百度
4、测试代码
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat image = imread("D:\\1.jpg");
namedWindow("window", WINDOW_NORMAL);
imshow("window",image);
waitKey(0);
}
第三步 配置cdb调试器
前面提到msvc编译速度快,上面步骤之后我们已经可以编译运行,但是无法调试。接下来就配置一下Windows的cdb调试器。
1、安装cdb
微软每个版本的系统都会提供调试工具Debugging tools for Windows,简称dbg,包含了WinDbg, KD, CDB, NTSD等常用的调试工具。从Win8.1开始似乎也不再提供独立的dbg了,而是包含在WDK或SDK中。这里用的是Win10 10.0.10586.15版本的SDK安装工具来安装dbg,见资源合集中的sdksetup.exe。双击打开,在选项中去掉其他几项,只保留Debugging Tools for Windows即可。很容易下载失败,可以尝试挂代理进行下载。
2、在Qt中配置cdb
打开Qt Creator,工具——选项,点击构建与运行——构建套件,选择自动检测,在调试器中点击Manage,可以自动检测到两个cdb.exe,分别是32位和64位,根据需求自行选择。
3、测试
F9加个断点,F5进行调试
到这一步,整个开发环境就基本配置完成了。
常见问题
1、找不到文件“cv.h”或者"opencv2/core/core_c.h"——检查INCLUDEPATH
2、无法解析的外部符号blabla……——检查LIBS
- 每次修改完***.pro工程文件,需要点击 构建——执行qmake后才能生效
3、程序异常结束 crashed——检查系统环境变量Path
- 修改环境变量之后需要重启Qt Creator
如果检查无误依然有问题,可尝试在 构建 中清理项目、重构项目、执行qmake后再编译。