opencv-2-VS2017与QT显示图像
opencv-2-VS2017与QT显示图像
目的
- 使用 VS 构建第一个 opencv 程序
- 使用 QT 构建 第一个 opencv 程序
- VS 导入 QT 程序
开始
我们需要设置 dll 文件的运行路径, 避免运行的时候找不到相应的库而报错,
接下来, 我们需要使用
设置运行环境
我们整理得到了, 我们需要将 我们的dll 文件夹 加入到系统 的Path 路径
过程如下: 此电脑--右键--属性--高级系统设置--环境变量--系统变量--Path--编辑--新建
然后填入我们 dll 所在的文件夹即可
VS2017使用 opencv 程序
opencv 的官方给出了一个 windows Visual Studio 使用 opencv 的方法[1],
其实都差不多, 在 博客 Win10, VS2017环境下OpenCV3.4.2的配置 也是使用 包含目录, 库目录, 以及附加依赖项进行的展示过程,
在后面执行之前, 的opencv 的目录结构是存在 D:\Project\Vision\ImageLab\Depend\opencv
目录下面的, 我们在前面介绍了每个文件夹里面的内容
- opencv430
- - dll
- - lib
- - include
新建工程
新建空的VS 项目, imagelab 在解决方案上右键, 点击属性进行配置即可
包含目录与库目录
添加你的 include 文件夹和 lib 文件夹即可
这里使用的是我的 绝对路径, 如果使用, 必须更改为你自己的路径, 不然 肯定出错.
库文件
此处选择的是相应的 opencv_world430d.lib
, opencv 在3.0 的版本之后, 只需要加入一个 world 的lib 文件即可, 不需要添加一系列的库文件, 也可以单独编译得到 值添加单个的库,
这里建议去看 Win10, VS2017环境下OpenCV3.4.2的配置 这篇博文, 写的十分详细,
编写程序
- #include <iostream>
- // 引入 opencv 函数头文件
- #include <opencv2/opencv.hpp>
- int main()
- {
- // 设置 要显示的图像路径
- std::string test_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena.png";
- // 读取图像
- cv::Mat lena_img = cv::imread(test_pic);
- // 显示图像
- cv::imshow("图像显示窗口", lena_img);
- cv::waitKey(0);
- return 0;
- }
调试运行
如果配置没有问题, 注意上面配置 的都是 debug x64, 在编辑页面也要是 一样的吗不能出错, 不然编辑的不对, 点击 生成--生成解决方案
如果程序复制过去的没有问题, 就不会有问题了,
此处我默认看这里的人有了一定的 C++ 程序基础, 不然解释太多的话就很麻烦,
点击绿色的 本地 windows 调试器
直接运行 就能看到这个窗口了
到这里, 我们的 VS 使用 opencv 就完成了 , 很容易就搞定了..
QT 使用 opencv 程序
QT 使用 opencv 更加简单, QT的主要工程文件是 *.pro
文件, 我们可以在文件中加入一些配置信息 便于我们执行 可以参考Windows下QT Creator配置OpenCV(VC版)
新建工程
新建工程 imagelab , 在工程上右键, 添加库
添加外部库, 点击选择到 lib 文件, 会自动选择 include
文件夹, 检查一下是否包含正确,
最终会在 *.pro
文件中 添加
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/Depend/opencv/lib/ -lopencv_world430
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/Depend/opencv/lib/ -lopencv_world430d
INCLUDEPATH += $$PWD/Depend/opencv/include
DEPENDPATH += $$PWD/Depend/opencv/include
我们 imagelab.pro 工程在 D:\Project\Vision\ImageLab
文件夹下, 对应的库 D:\Project\Vision\ImageLab\Depend\opencv\lib
文件夹下面, 所以, 这里 $$PWD
是 QT pro 文件的语法, 能够获取到 pro文件所在的目录, 也就是工程的当前目录,
QT 工程 需要首先执行 qmake 生成 编译文件,
编写代码
QT 就是 标准的C++, 只不过 QT 是一套 C++库, 我们能够很容易的使用 界面库, 生成带有界面的程序..
- #include "mainwindow.h"
- #include <QApplication>
- // 引入 opencv 函数头文件
- #include <opencv2/opencv.hpp>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- MainWindow w;
- w.show();
- // 设置 要显示的图像路径
- std::string test_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena.png";
- // 读取图像
- cv::Mat lena_img = cv::imread(test_pic);
- // 显示图像
- cv::imshow("图像显示窗口", lena_img);
- cv::waitKey(0);
- return a.exec();
- }
调试运行
点击构建, 最后点击运行, 如果一切顺利, 我们就能看到这幅图像了, 这里图像显示还是 opencv 的窗口, 我们后续会将其显示在opencv 的窗口上,
VS 导入 QT 工程
VS 有一个很好用的插件, 叫做 Qt Visual Studio Tools, 可以下载安装,或者在 VS 工具--拓展与更新--联机--搜索
进行安装, 安装之后需要重启 VS
VS 开发 opencv 的程序 必备插件 Image Watch, 可以在调试过程中查看 内存中的 opencv Mat 数据. 强烈推荐..
点击 设置 QT option 然后添加, 直到我们点击到 QT安装目录下面 的 具体编译器文件夹,
F:\Fxxk\QT\Qt5.14.2\5.14.2\msvc2017_64
我们使用 QT 插件导入 *.pro
文件, 会生成相应的工程,
跟我们直接 VS与 opencv 的工程设置不同, QT 自动生成的文件没有更改 包含目录和库文件
而是选择了在 附加包含目录里面增加了, 不仅增加了 opencv 的目录, 而且包含了 QT 的很多库目录,
对应的 , 我们仍然使用 附加依赖项 设置 输入 lib 文件
这样, 我们就能使用 VS 编译得到 QT 的程序, 编译成功, 运行即可再次看到 lena 图像
其他
我们后续的开发主要是 QT 进行开发, 用于生成自定义的界面, 便于我们开发过程中的图像展示工作.
《OpenCV: How to build applications with OpenCV inside the 〈Microsoft Visual Studio〉》. 见于 2020年4月20日. https://docs.opencv.org/4.3.0/dd/d6e/tutorial_windows_visual_studio_opencv.html. ↩
opencv-2-VS2017与QT显示图像的更多相关文章
- Win7下安装VS2017、安装Qt5.10.1以及在VS2017添加qt插件
一.安装VS2017 1.下载VS2017 进入vs下载官网https://www.visualstudio.com/zh-hans/downloads/,选择所需要的vs版本,进行在线安装. 2.安 ...
- Opencv + opencv_contrib + Tesseract 之Qt开发环境搭建
1.软件包准备 opencv源码包地址: 官网 github opencv_contrib源码包地址: github Tesseract源码包地址: ...
- OpenCV 入门示例之一:显示图像
前言 本文展示一个显示图像的示例程序,它用于从硬盘加载一副图像并在屏幕上显示. 代码示例 // 此头文件包含图像IO函数的声明 #include "highgui.h" int m ...
- opencv在VS2017上的环境搭建
最近开始做一个图像识别的小项目,需要安装opencv,VS里报的错迷的一批,网上教程好多,找了好长时间,终于找的两个解决了问题,在这儿记录一下. 安装很简单,在opencv官网(https://ope ...
- VS2017编译Qt x64
1.打开VS本机工具命令提示vcvars64.bat. 2.进入Qt源码目录 cd E:\qt-everywhere-opensource-src- mkdir qt-build && ...
- 人脸识别中的检测(在Opencv中加入了QT)
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include & ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- VS2015+OpenCV+Qt
VS2015+OpenCV+Qt 01.OpenCV 下载 进入官网链接: https://opencv.org,下载所需要的版本: 下载完成后直接双击,选择解压路径,解压到响应的文件夹中: 若之后需 ...
- qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题
在用opencv处理图片显示在qt label上的时候遇到不是问题 1. qt上要用qimage形式才干显示 IplImage转成 Qimage 彩色图像转换 IplImage *fram; QIm ...
随机推荐
- Java并发基础05. 传统线程同步通信技术
先看一个问题: 有两个线程,子线程先执行10次,然后主线程执行5次,然后再切换到子线程执行10,再主线程执行5次--如此往返执行50次. 看完这个问题,很明显要用到线程间的通信了, 先分析一下思路:首 ...
- JDK12不包含JAXB-API
##用JDK12环境下 做EUREKA的的时候 报错如下 java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not ...
- 面试官: 说说你对async的理解
大家好,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 分享不易,希望能够得到大家的支持和关注. TL;DR async是g ...
- 安装部署Tomcat服务器
安装部署Tomcat服务器 案例1:安装部署Tomcat服务器 案例2:使用Tomcat部署虚拟主机 案例3:使用Varnish加速Web 1案例1:安装部署Tom ...
- Golang笔记集
学习Golang了, 下面分享我的, 还有我收集的Golang的学习资料 我的基础笔记地址: https://github.com/zhuchangwu/go-study-notes 其他参考: Go ...
- sqlchemy的外键及其约束条件
外键创建 使用sqlalchemy创建外键非常简单.在表中增加一个字段,制定这个字段外键的是哪个表的哪个字段就可以了. 从表中外键定义的字段必须和主键字段类型保持一致. 实例代码: import mo ...
- python 函数--生成器
一.生成器函数: 常规定义函数,使用yield语句而不是return语句返回结果.yield语句一次返回一个结果. 好处在于,不会一下占用很多内存生成数据. 本质:就是一个迭代器. python中提供 ...
- DevEco Toolkit使用指南--平行视界
高效开发和创新业务是开发者一直追求的目标,当接到开发需求时,如果可以找到现成的API调用,能为开发者节省大把时间,将会留有更多的时间进行业务的创新.华为DevEcoToolkit聚合了华为丰富的开 ...
- 30.6 HashMap的使用
/* * * 使用HashMap存储数据并遍历(字符串作为key) * *使用HashMap存储数据并遍历(自定义对象作为key) */ 字符串做key和Map的使用一样,重点介绍自定义对象作为key ...
- 14-jmeter分布式环境
1.分布式概念: jmeter做性能时,会消耗本地机器资源 本机无法没有限制的创建运行线程(一般500线程就差不多会报错) 一般这时候会用到分布式的环境 2.环境: 前提条件:环境一致(有时候可以直接 ...