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:ProjectVisionImageLabDependopencv
目录下面的, 我们在前面介绍了每个文件夹里面的内容
- opencv430
- - dll
- - lib
- - include
新建工程
新建空的VS 项目, imagelab 在解决方案上右键, 点击属性进行配置即可

包含目录与库目录
添加你的 include 文件夹和 lib 文件夹即可

这里使用的是我的 绝对路径, 如果使用, 必须更改为你自己的路径, 不然 肯定出错.
库文件
此处选择的是相应的 opencv_world430d.lib
, opencv 在3.0 的版本之后, 只需要加入一个 world 的lib 文件即可, 不需要添加一系列的库文件, 也可以单独编译得到 值添加单个的库,

这里建议去看 Win10, VS2017环境下OpenCV3.4.2的配置 这篇博文, 写的十分详细,
编写程序
- // 引入 opencv 函数头文件
- 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:ProjectVisionImageLab
文件夹下, 对应的库 D:ProjectVisionImageLabDependopencvlib
文件夹下面, 所以, 这里 $$PWD
是 QT pro 文件的语法, 能够获取到 pro文件所在的目录, 也就是工程的当前目录,

QT 工程 需要首先执行 qmake 生成 编译文件,
编写代码
QT 就是 标准的C++, 只不过 QT 是一套 C++库, 我们能够很容易的使用 界面库, 生成带有界面的程序..
- // 引入 opencv 函数头文件
- 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:FxxkQTQt5.14.25.14.2msvc2017_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. ↩