windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash

1. opencv 下载与安装

1.1 官网链接:https://opencv.org/releases/

对于我们这些初学者根本不care源码编译,也就不介绍了网上很多用cmake去编译opencv源码,有兴趣同学自己研究,这里只介绍简单又实惠的方法。这里下载的是4.6.0版本
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第1张图片
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第2张图片

1.2 双击下载好的exe解压到任意目录

解压完成后到build目录下可以看到opencv的头文件include和库文件
重要:将opencv动态库添加到环境变量中,这样使用就可以找到opencv的动态库,也可以放到系统目录下,反正是要告诉电脑我opencv dll库在哪里可以找到
也就是把D:\tools2\opencv\build\x64\vc15\bin这个目录加到系统环境变量中

windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第3张图片
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第4张图片

1.3 简单测试一下opencv,这一步和qt没有关系,不感兴趣的直接跳过

使用vs2019创建一个cmake项目工程
在CmakeLists.txt中添加opencv头文件和库文件
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第5张图片

代码:

#include "CMakeProject3opencv.h"

#include

using namespace std;
using namespace cv;

int main()
{
	Mat m1(512, 512, CV_8UC3, Scalar(0, 255, 0));
	imshow("m1", m1);
	waitKey(0);
	return 0;
}

结果:
可以看到后台有很多日志信息,其中也有些faild,不用管,因为这里拿的是dubeg版本,你也可以把上面的静态库换成opencv_world460.lib 不带d的release版本,就不会有这些打印信息了。代码生成了一块绿色画布,测试ok。
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第6张图片

2 qt5的安装

这里不在细说了,本人测试用的是qt5.12.12
https://download.qt.io/archive/qt/5.12/5.12.12/
直接把windows版本的exe下载下来,一路全选安装。网上很多参考,这里放一个
https://blog.csdn.net/qq_42257666/article/details/123285125

3 qt中配置opencv

3.1 新建个qt工程

这里给的是一个错误的操作,但是是很多人遇到的,希望先看完整个过程,再去动手操作,过程很重要,只有这样你才能明白每一步都在干啥。
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第7张图片
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第8张图片
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第9张图片
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第10张图片
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第11张图片
32 和 64的都选上,运行的时候根据自己的opencv可以选择
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第12张图片
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第13张图片

.pro 中配置opencv,类似CmakeList.txt
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第14张图片
main.cpp
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第15张图片
运行,不出意外会报错。
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第16张图片
果然一堆错误,原因很简单,我们用的opencv版本是用vc去编译构建的,而刚才我们创建qt工程选择的是MinGw编译的。解决办法:
方法一:找一个MinGw编译的opencv
方法二:构建MSCV的qt工程

3.2 方法一,找一个MinGw编译的opencv

3.2.1 下载安装MinGw编译的opencv

幸好还真能找到opencv MinGW的release版本,或者有能力的自己编译一个
链接:
https://github.com/huihut/OpenCV-MinGW-Build/releases/tag/OpenCV-4.5.5-x64
报错参考:
https://developer.aliyun.com/article/836818

下载请注意选择一定要和自己的qt版本对应
如下:
一定要关注MinGw版本和使用的32位还是64位。MinGw版本号最好和qt版本一致,本人试过和qt版本号不一致也行。但是编译使用的mingw32还是mingw64这个一定要和选择构建使用的MinGw64还是MinGw32一致。以下是楼主选择的版本
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第17张图片

下载完之后,解压,同样要将动态库添加到环境变量中,也就是以下目录添加到环境变量中,方便程序能找到dll
D:\tools2\OpenCV-MinGW-Build-OpenCV-4.5.5-x64\x64\mingw\bin
重要:设置好环境变量一定要重启qt应用程序,一定要,不然环境变量在qt运行时不生效,程序会crash,楼主被这个坑了很长时间
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第18张图片

3.2.2 新建qt工程

新建工程和前面的一样,但是有一个位置需要注意
kits这个选项把四个都选上,如果你很熟练了只用选MinGw 32-bit,为什么呢?别忘了咱们opencv下载是MinGw32编译的因此必须用这个,这也是上面为什么强调opencv 编译用的mingw是32的还是64,不然程序必报错,报错类型如下。选择四个的好处是我们可以运行时随时切换,主要适合初学者。
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第19张图片

选错qt工程构建所用的编译器报错找不到cv的函数
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第20张图片

3.2.3 代码和.pro文件配置

.pro文件看下图,很清楚了,跟CmakeList很类似。里面的问题有人知道可以探讨一下
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第21张图片
代码还是之前的代码,效果还是之前的效果
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第22张图片

对了,还记得我们说过选择qt工程的编译器了吗?
我们在3.2.2中选择了4个kits,但是这里运行时只能选择一个,而且必须根据自己opencv构建的编译选择,楼上已经说了楼主用的Mingw32编译的,因此这里必须选择MinGw 32-bit的。到这里基本上已经搞定了opencv的配置。

windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第23张图片

3.3 使用VC编译构建的qt和opencv

3.3.1 opencv 下载与配置

在第1节中我们详细讲了vc编译的opencv下载与动态库的配置,完全按照第1.1和1.2配置即可,一定要把vc版的动态库添加到环境变量中,楼主是以下目录
D:\tools2\opencv\build\x64\vc15\bin

3.3.2 .pro与代码

我们直接在3.2的基础上改一下就可以了,代码不用改,只用改.pro里面的配置,如下:
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第24张图片
运行的时候切换到MSVC2017 64 bit,原因是此时我们用的是vc15编译的opencv,这里是不是忽然明白了很多。
windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第25张图片
运行结果和INFO信息都和我们第1节在vs2019中运行的一模一样

windows 10 Qt5 + opencv配置,免编译,有运行实例结果,欢迎咨询各种crash_第26张图片

思考:那MinGW和VC编译的有什么区别吗?这个可以自己百度一下,大概意思就是VC适合windows, MinGw适合跨平台。还有就是有兴趣的同学可以自己去编译opencv,因为有时候适合自己的才是最好的。

你可能感兴趣的:(opencv,windows,qt)