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实现tif/tiff/bmp图片转换png图片
package org.analysisitem20181016.test; import java.io.File; import java.io.FileOutputStream; import ...
- 【线段树基础】NKOJ 1321 数列操作
时间限制 : 10000 MS 空间限制 : 165536 KB 问题描述 假设有一列数{Ai}(1≤i≤n),支持如下两种操作:将Ak的值加D.(k, D是输入的数)输出As+As+1+…+At ...
- MFC 工具栏ToolBar
一.创建工具栏 1.在MFC工程,找到“资源视图”界面,右键添加资源,选择Toolbar,点击新建: 2.修改工具条属性: 3.添加工具: 新建ToolBar后,会自动生成一个工具,编辑ID后,工具条 ...
- Docker常用yml
GitLib version: '3.1' services: web: image: 'twang2218/gitlab-ce-zh:11.0.5' restart: always hostname ...
- python中装饰器的使用
看个例子: # 定义装饰器函数 def log(func): """ 接受一个函数作为参数,并返回一个函数 :param func: :return: "&qu ...
- 201771010108-韩腊梅《面向对象程序设计(java)》第二周学习总结
201771010108<面向对象程序设计(java)>第二周学习总结 第一部分:理论知识学习部分 第三章:Java的基本程序设计结构 1.标识符:① 标识符由字母.下划线.美元符号和数字 ...
- java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮
1.简介 上一篇宏哥介绍完了接口用例设计,那么这一章节,宏哥就趁热打铁介绍一下,接口测试工具.然后小伙伴们或者童鞋们就可以用接口测试工具按照设计好的测试用例开始执行用例进行接口手动测试了.关于手动测试 ...
- Spring (六):整合Mybatis
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- 下载安装配置 Scala-2.12.11
文章更新于:2020-03-24 安装惯例,文件附上链接放在文首. 文件名:scala-2.12.11.tgz 文件大小:19.83 MB 下载链接:https://downloads.lightbe ...
- go 反射包
一.什么是反射? 反射是用程序检查其所拥有的结构,尤其是类型的一种能力: 二.Printf Printf 的函数声明为: func Printf(format string, args ... int ...