OpenCV与Qt的环境搭建及Demo
前言:
前段时间写了很多OpenCV的程序,虽然重点在算法上,但图像窗口只能靠cvNamedWindow,效果很不理想。遂希望用Qt配合OpenCV使用,为我的程序建立图形化界面。然而,依我对OpenCV的了解,环境配置一定是玄学,在解决了多个问题后,终于实现了Demo,在这里分享下我的成果,也感谢文末参考资料中的各位博主。
Qt在Windows环境下有两种编译方式,MinGW和msvc。msvc就是微软的VC运行库,只要安装了Visual Studio就自带了,在编译速度上比较有优势。缺点是,采用msvc编译的话,需要单独安装cdb调试工具,才能在Qt中进行单步调试,本文将采用Win10 64bit+opencv 2.4.10 + Qt5.8.0 + VS2013配置环境。
第一步:安装与配置OpenCV
在此,我们假设你的电脑上已经安装了Visual Studio,本文将不再赘述。因为某些历史问题,我的OpenCV的版本为2.4.10,如果你的版本也是2.x.x,那么你可以直接将2410替换成你的版本。
- 从http://opencv.org/downloads.html下载OpenCV并解压到一个目录中,我们假设解压到了"D:\opencv\"中。
- 配置环境变量,在系统->高级系统设置->环境变量->系统变量中,找到Path,并添加"D:\opencv\build\x64\vc12\bin"。请注意上面路径中的x64/vc12是需要根据你系统的版本自行替换的。
第二步:安装与配置Qt
- 从https://account.qt.io/downloads下载Qt,并注册账户、开始安装。注意在安装过程中需要选择MSVC2013 64bit的kit,当然,这也需要根据你系统的版本进行替换。
- 新建一个Qt Widges Application,注意勾选VSVC2013。如果一切就绪,Qt Creator中应该为下图所示。

- 可以看到,一个简单的Qt项目由.pro文件,头文件、源文件、界面文件组成,今后我们都将用到。我们需要从.pro文件开始修改
第三步:配置开发环境
.pro文件与vs中的属性表类似,决定了项目需要的头文件、依赖项的位置。在这一步我用来相当多的时间来找到合适的配置,一个典型的配置表如下所示:
INCLUDEPATH += D:/opencv/build/include
CONFIG(debug, debug|release): {
LIBS += -LD:/opencv/build/x64/vc12/lib \
-lopencv_core2410d \
-lopencv_imgproc2410d \
-lopencv_highgui2410d \
-lopencv_ml2410d \
-lopencv_video2410d \
-lopencv_features2d2410d \
-lopencv_calib3d2410d \
-lopencv_objdetect2410d \
-lopencv_contrib2410d \
-lopencv_legacy2410d \
-lopencv_flann2410d
} else:CONFIG(release, debug|release): {
LIBS += -LD:/opencv/build/x64/vc12/lib \
-lopencv_core2410 \
-lopencv_imgproc2410 \
-lopencv_highgui2410 \
-lopencv_ml2410 \
-lopencv_video2410 \
-lopencv_features2d2410 \
-lopencv_calib3d2410 \
-lopencv_objdetect2410 \
-lopencv_contrib2410 \
-lopencv_legacy2410 \
-lopencv_flann2410
}
请注意,在绝大多数情况下这个配置需要经过修改才能使用!与之前一样,我们依然假设你的安装目录在"D:\opencv"所以如果不符,需要将三处目录位置全部修改。另外开头提到过,我的版本为2.4.10,所以如果版本不符,则需要将2410替换成其他数字。如果你的系统为x86,则需要修改目录中的x64为x86。

在执行完上述操作后,需要点击Qt Creator中的构建->执行qmake来更新程序的依赖。
为了快速验证环境是否配置正确,我们用一段简单的程序来验证可否使用opencv
#include <iostream>
#include <opencv2/opencv.hpp> using namespace std;
using namespace cv; int main(int argc, char *argv[])
{
Mat image = imread("D:\\test.jpg");
cvNamedWindow("window", CV_WINDOW_NORMAL);
imshow("window",image);
waitKey(0);
}
点击运行之后,如果没有任何错误,可以显示图片,那么环境安装成功,如果出现错误,我们需要进行排查。
1.提示没有找到opencv.hpp
这种情况说明include path设置有问题,请检查是否正确。如果是正确的却依然报错,请重新qmake、构建程序。
2.提示多条LKN错误,”无法找到入口“之类的
这种情况通常是因为Lib设置错误,请检查位置是否正确、版本是否正确。更正后重新qmake。
3.编译可以通过,但是提示程序crash
如果确认没有1、2中提到的问题,请检查环境变量是否正确,如果正确却依然报错,请注销用户后重新登陆,使环境变量生效。
4.程序运行后崩溃,提示OpenCV Error: Assertion failed (size.width>0 && size.height>0)
如果确认你的test.jpg可以读取,那么可能遇到了跟我一样的问题。在Qt的.pro文件中,一定要注意区分debug模式带d的lib与release模式的lib,如果两者没有用指令判断,那么很有可能可以通过编译运行,但会出现类似于这种的奇怪错误。解决方法综合2、3,重点检查lib文件与系统环境变量是否正确。版本错误、路径错误、x86与x64错误都可能导致类似的问题出现。
第四步:配置debugger
1.安装cdb
首先下载Debugging tools for Windows,选择本机安装,之后只选择安装Debugging Tools for Windows即可。
2.配置Qt

选择工具->选项->构建和运行。如果没有自动检测到安装的cdb,那么手动添加一个即可,只需要选择cdb安装位置中的cdb.exe即可,Qt会自动检测到类型版本等数据。
最后,添加一个断点试验一下

如果一切正常,那么恭喜你已经成功配置了opencv。当然,一次成功的可能性很小,往往需要我们耐下心来,反复调试。
参考文献:
1. Win10下Qt + OpenCV的开发环境配置 http://liutingxi.strikingly.com/blog/7-18-win10-qt-opencv作者在文章中还有网盘链接,如果需要可以前去查看
3. http://stackoverflow.com/questions/15881913/how-to-link-opencv-in-qtcreator-and-use-qt-library
4. http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
5. http://www.youtube.com/watch?v=dgcXYQijV6c
OpenCV与Qt的环境搭建及Demo的更多相关文章
- qt学习教程1.qt开发环境搭建
qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...
- (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功
(win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 1.下载opencv 官网http://opencv.org/下载windows版Op ...
- iMX6 yocto平台QT交叉编译环境搭建
转:https://blog.csdn.net/morixinguan/article/details/79351909 . /opt/fsl-imx-fb/4.9.11-1.0.0/environm ...
- Zynq7000开发系列-6(QT开发环境搭建:Ubuntu、Zynq)
操作系统:Ubuntu14.04.5 LTS 64bit Qt:Qt 5.4.2 (qt-opensource-linux-x64-5.4.2.run.qt-everywhere-opensource ...
- windows10 vs2019 + opencv 3.4.7环境搭建
windows vs2019 + opencv 3.4.7环境搭建 安装Opencv 3.4.7 下载 Opencv 第1步 进入 opencv releases 页面,点击 "Window ...
- Qt开发环境搭建 - Windows + VS2010 + VS插件
Qt 开发环境搭建 - Windows+VS2010+VS插件 1.Qt在Windows平台下的三种开发环境 方案 编辑器 编译器 调试器 一 Qt Creator MinGW GDB 二 Qt Cr ...
- 【Java学习系列】第1课--Java环境搭建和demo运行
本文地址 分享提纲: 1. java环境的搭建 2. java demo代码运行 3.参考文档 本人是PHP开发者,一直感觉Java才是程序的王道(应用广,科班出身),所以终于下决心跟一跟. 主要是给 ...
- Hibernate之环境搭建及demo
ORM概念 ORM即Object/Relation Mapping, 对象/关系数据库映射.ORM是一种规范,完成面向对象编程语言到关系数据库之间的映射.J2EE中的JPA就是一种ORM规范. ORM ...
- QT笔记(1)--QT编程环境搭建
一.QT简介 Qt 是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊 ...
随机推荐
- gogogo
- web工程导入新环境的注意事项
问题一:The type java.lang.Object cannot be resolved. 解决办法: 当你在Eclipse引用不同版本JDK工程时会发生该问题.由于你开发环境中应用了多个版本 ...
- URL末尾处的斜杠“/”
在输入网址的时候,比如输入"http://www.xxx.com/",此URL中末尾的斜杠是至关重要的.因为在这种情况下,浏览器能安全的添加斜杠.而像"http://ww ...
- 修改Cosbench源码 支持s3的 http range request 测试场景
在视频点播的业务应用场景中,用户使用了ffmpeg工具做视频实时转码用. 而ffmpeg使用range 请求.而Cosbench不支持这种测试场景,所以需要修改源码支持这种测试场景. HTTP 协议介 ...
- java 8 Lambda表达式(翻译自Stackoverflow)
(原文链接)Lambda只能作用于一个只有一个抽象方法的函数式接口(Function Interface),不过函数式接口可以有任意数量default或static修饰的方法(因此,它们有时也被当做单 ...
- Fresco-FaceBook推出的Android图片加载库
在Android设备上面,快速高效的显示图片是极为重要的.过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题.图片太大,但是手机的内存却很小.每一个像素的R.G.B和alpha通道总共要占用4 ...
- 在Ubuntu 中使用Source Code Pro字体
1.下载字体 推荐GitHub上面的项目主页上下载 Source Code Pro 2.解压 unzip SourceCodePro_FontsOnly-1.013.zip 3. 打开SourceCo ...
- 【php】PHP环境整合
很久没装环境, 今天重新装了一次.遇到不少问题.记录下方便以后查看 修改apache的配置文件httpd.conf #apache 解析phpLoadFile "C:/phpeve/php5 ...
- PL/SQL 记录 Record 简介
记录类型是表中当行数据结构的一个镜像.每个记录只存储一行数据,记录包含的是字段,而不是列. 1.用%rowtype属性隐式定义记录类型 declare individual individuals%r ...
- Linux显示计算次数的结果
Linux显示计算次数的结果 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -c free:选项需要一个参数 -- c Usage: free [o ...