opencv-2-VS2017与QT显示图像

opencvqtVSC++

目的

  1. 使用 VS 构建第一个 opencv 程序
  2. 使用 QT 构建 第一个 opencv 程序
  3. VS 导入 QT 程序

开始

我们需要设置 dll 文件的运行路径, 避免运行的时候找不到相应的库而报错,

接下来, 我们需要使用

设置运行环境

我们整理得到了, 我们需要将 我们的dll 文件夹 加入到系统 的Path 路径

过程如下: 此电脑--右键--属性--高级系统设置--环境变量--系统变量--Path--编辑--新建

然后填入我们 dll 所在的文件夹即可


path 设置过程

path 设置

VS2017使用 opencv 程序

opencv 的官方给出了一个 windows Visual Studio 使用 opencv 的方法[1],

其实都差不多, 在 博客 Win10, VS2017环境下OpenCV3.4.2的配置 也是使用 包含目录, 库目录, 以及附加依赖项进行的展示过程,

在后面执行之前, 的opencv 的目录结构是存在 D:\Project\Vision\ImageLab\Depend\opencv目录下面的, 我们在前面介绍了每个文件夹里面的内容

  1. opencv430 


  2. - dll 


  3. - lib 


  4. - include 


新建工程

新建空的VS 项目, imagelab 在解决方案上右键, 点击属性进行配置即可


配置属性

包含目录与库目录

添加你的 include 文件夹和 lib 文件夹即可


包含目录与库目录

这里使用的是我的 绝对路径, 如果使用, 必须更改为你自己的路径, 不然 肯定出错.

库文件

此处选择的是相应的 opencv_world430d.lib, opencv 在3.0 的版本之后, 只需要加入一个 world 的lib 文件即可, 不需要添加一系列的库文件, 也可以单独编译得到 值添加单个的库,


附加依赖库文件

这里建议去看 Win10, VS2017环境下OpenCV3.4.2的配置 这篇博文, 写的十分详细,

编写程序

  1. #include <iostream> 



  2. // 引入 opencv 函数头文件 


  3. #include <opencv2/opencv.hpp> 



  4. int main() 





  5. // 设置 要显示的图像路径 


  6. std::string test_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena.png"; 



  7. // 读取图像 


  8. cv::Mat lena_img = cv::imread(test_pic); 



  9. // 显示图像 


  10. cv::imshow("图像显示窗口", lena_img); 


  11. cv::waitKey(0); 



  12. return 0; 





调试运行

如果配置没有问题, 注意上面配置 的都是 debug x64, 在编辑页面也要是 一样的吗不能出错, 不然编辑的不对, 点击 生成--生成解决方案 如果程序复制过去的没有问题, 就不会有问题了,

此处我默认看这里的人有了一定的 C++ 程序基础, 不然解释太多的话就很麻烦,


编辑页面配置

点击绿色的 本地 windows 调试器 直接运行 就能看到这个窗口了


opencv lena 图片

到这里, 我们的 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文件所在的目录, 也就是工程的当前目录,


qmake 和构建

QT 工程 需要首先执行 qmake 生成 编译文件,

编写代码

QT 就是 标准的C++, 只不过 QT 是一套 C++库, 我们能够很容易的使用 界面库, 生成带有界面的程序..


  1. #include "mainwindow.h" 


  2. #include <QApplication> 



  3. // 引入 opencv 函数头文件 


  4. #include <opencv2/opencv.hpp> 



  5. int main(int argc, char *argv[]) 





  6. QApplication a(argc, argv); 


  7. MainWindow w; 


  8. w.show(); 



  9. // 设置 要显示的图像路径 


  10. std::string test_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena.png"; 



  11. // 读取图像 


  12. cv::Mat lena_img = cv::imread(test_pic); 



  13. // 显示图像 


  14. cv::imshow("图像显示窗口", lena_img); 


  15. cv::waitKey(0); 



  16. return a.exec(); 






调试运行

点击构建, 最后点击运行, 如果一切顺利, 我们就能看到这幅图像了, 这里图像显示还是 opencv 的窗口, 我们后续会将其显示在opencv 的窗口上,


QT 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设置

我们使用 QT 插件导入 *.pro 文件, 会生成相应的工程,

跟我们直接 VS与 opencv 的工程设置不同, QT 自动生成的文件没有更改 包含目录和库文件

而是选择了在 附加包含目录里面增加了, 不仅增加了 opencv 的目录, 而且包含了 QT 的很多库目录,


附加包含目录

对应的 , 我们仍然使用 附加依赖项 设置 输入 lib 文件


附加依赖项

这样, 我们就能使用 VS 编译得到 QT 的程序, 编译成功, 运行即可再次看到 lena 图像


VS 调试 QT 程序

其他

我们后续的开发主要是 QT 进行开发, 用于生成自定义的界面, 便于我们开发过程中的图像展示工作.



  1. 《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显示图像的更多相关文章

  1. Win7下安装VS2017、安装Qt5.10.1以及在VS2017添加qt插件

    一.安装VS2017 1.下载VS2017 进入vs下载官网https://www.visualstudio.com/zh-hans/downloads/,选择所需要的vs版本,进行在线安装. 2.安 ...

  2. Opencv + opencv_contrib + Tesseract 之Qt开发环境搭建

    1.软件包准备 opencv源码包地址:                官网  github opencv_contrib源码包地址:   github Tesseract源码包地址:        ...

  3. OpenCV 入门示例之一:显示图像

    前言 本文展示一个显示图像的示例程序,它用于从硬盘加载一副图像并在屏幕上显示. 代码示例 // 此头文件包含图像IO函数的声明 #include "highgui.h" int m ...

  4. opencv在VS2017上的环境搭建

    最近开始做一个图像识别的小项目,需要安装opencv,VS里报的错迷的一批,网上教程好多,找了好长时间,终于找的两个解决了问题,在这儿记录一下. 安装很简单,在opencv官网(https://ope ...

  5. VS2017编译Qt x64

    1.打开VS本机工具命令提示vcvars64.bat. 2.进入Qt源码目录 cd E:\qt-everywhere-opensource-src- mkdir qt-build && ...

  6. 人脸识别中的检测(在Opencv中加入了QT)

    #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include & ...

  7. [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)

    本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...

  8. VS2015+OpenCV+Qt

    VS2015+OpenCV+Qt 01.OpenCV 下载 进入官网链接: https://opencv.org,下载所需要的版本: 下载完成后直接双击,选择解压路径,解压到响应的文件夹中: 若之后需 ...

  9. qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题

    在用opencv处理图片显示在qt label上的时候遇到不是问题 1. qt上要用qimage形式才干显示 IplImage转成 Qimage 彩色图像转换 IplImage  *fram; QIm ...

随机推荐

  1. Vue 【前端面试题】

    前言 看看面试题,只是为了查漏补缺,看看自己那些方面还不懂.切记不要以为背了面试题,就万事大吉了,最好是理解背后的原理,这样面试的时候才能侃侃而谈.不然,稍微有水平的面试官一看就能看出,是否有真才实学 ...

  2. 1272: 【基础】求P进制数的最大公因子与最小公倍数

    1272: [基础]求P进制数的最大公因子与最小公倍数 时间限制: 1 Sec 内存限制: 16 MB 提交: 684 解决: 415 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 ...

  3. Java数组的声明与创建

    今天在刷Java题的时候,写惯了C++发现忘记了Java数组的操作,遂把以前写的文章发出来温习一下. 首先,数组有几种创建方式? Java程序中的数组必须先进行初始化才可以使用,所谓初始化,就是为数组 ...

  4. shell重定向输出的应用

                         shell重定向输出的应用 案例2:重定向输出的应用 2.1问题 本例要求编写一个脚本/root/out.sh,功能特性如下: 执行此脚本显示I love s ...

  5. Vulnhub DC-7靶机渗透

    信息搜集 nmap -sP 192.168.146.0/24 #主机发现 nmap -A 192.168.146.144 #端口扫描 查看robots.txt,看看admin,403,其他没有什么可利 ...

  6. java文件中字母出现的次数和百分比

    主要是文件的读写.先在代码中导入文件.一行一行的进行数据的读入,通过“  ”空格对读入的信息进行分割,存入到数组里之后对于每一个单词的每一个字母进行区分存入相应的字母数组里.最后统计总的字母个数.应用 ...

  7. (js描述的)数据结构[哈希表1.3](10)

    1.哈希表的完善 1.容量质数(limit):需要恒为质数,来确保元素的均匀分布. 1)普通算法: 判断一个数是否为质数 function isPrime(num) { for (var i = 2; ...

  8. webpack中引用jquery

    1.首先需要添加项目中jquery的依赖 npm install jquery --save-dev 2.参考配置代码: var webpack = require("webpack&quo ...

  9. 《闲扯Redis四》List数据类型底层编码转换

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

  10. 《民国奇探》的弹幕有点逗比,用 Python 爬下来看看

    电视剧<民国奇探>是一部充斥着逗比风的探案剧,剧中主要角色:三土.四爷.白小姐,三土这个角色类似于<名侦探柯南>中的柯南但带有搞笑属性,四爷则类似于毛利小五郎但有大哥范且武功高 ...