前言
在给QT配置opencv的时候有麻烦的一个环节就是要编译opencv,中间有很多步骤和坑,搞得我也是很头疼,看到网上对于编译opencv的帖子,大家还都有点不一样,有的人很顺利就成功了,有的人就死活也搞不定。。。我算是累死累活才编译成功的,其中的辛酸就不与外人言了。这里就直接把我编译好的文件分享给大家,你只需要下载下来,然后配置一下环境变量,在需要的时候引用一下头文件就可以了,完美避开编译opencv的大坑,快速地将opencv部署到自己的项目中!
本方案的所需所有文件均已上传到百度云盘:https://pan.baidu.com/s/1__1eWsqHt9JCuMWF45eUnA提取码: u38f
请按需下载!
环境及问题描述
环境
window10 64位
QT5.11
opencv3.4.4
问题
需要在window10上安装QT开发环境并配置opencv,快速简洁安装!
安装及配置步骤
1:安装QT
可以下载我已经共享的安装文件,也可以直接在官网上下载QT安装文件,这里的版本不限于5.11,其他的版本应该也能用,不过我没有试过,但是5.11的肯定能行!
打开安装文件,一直next,直到需要选择安装工具,如下图所示:
由于我已经安装的QT,所以没办法再出现这个界面了,所以就直接引用了这个博客的一张图,他这里有各个选项的具体含义,欢迎各位去了解一下!后面我也会提到VS编译和MinGW编译的不同!
咱们这里就只选红色框的那一项就行了,就是使用MinGW编译器!然后后面的就直接一路next,直到安装成功就行了!
2:配置opencv
2.1>解压install文件
首先在我共享的文件夹中下载install.zip文件, 然后解压缩,此时opencv就配置完成一半了!哈哈哈,是不是很惊讶, 别人还要编译各种各种东西,这就完成了?是滴,因为编译opencv这个大坑我已经给你搞定了!所以就放心用吧!
2.2>配置opencv 环境变量
将文件解压缩之后,这个文件夹就是opencv所用到的库,可将其拷贝到任意文件夹下,然后添加环境变量即可配置完成!
如我把QT安装在了C:\Qt中,为了便于管理,先在C:\Qt中创建一个文件夹opencv3.4.4(当然你也可以不创建),然后把install文件夹整个拷贝到C:\Qt\opencv3.4.4\文件夹下。文件结构如下图所示;
然后在环境变量中添加一条:C:\Qt\opencv3.4.4\install\x86\mingw\bin (注:每个人的可能都不一样,这取决于你把install文件拷贝到哪块了, 这个不应该是你出错的原因!)如下图所示:
测试使用opencv
首先使用QT新建一个项目,如下图所示:
后面一路默认就行了,创建好一个项目后,如何使用opencv呢?下面这两个步骤和关键,每次新建一个项目都要用到,所以,敲黑板了,这块要考的!
1>在xxxx.pro文件中添加头文件及库文件路径
点开xxxx.pro文件,在其中加入如如下几行代码:
INCLUDEPATH += C:/Qt/opencv3.4.4/install/include/opencv \
C:/Qt/opencv3.4.4/install/include/opencv2 \
C:/Qt/opencv3.4.4/install/include \
LIBS += -L C:/Qt/opencv3.4.4/install/x86/mingw/lib/libopencv_*.a
上面的路径也同样,每个人都不一样,主要看你的install文件拷贝到哪里了!请根据个人情况自行修改。
2>在需要使用opencv的地方添加上头文件引用
现在需要测试opencv因此我在mainwindow.cpp文件中打开一张图片并显示,所以就需要在这个文件中引用opencv的相关头文件,话不多说,直接把这个文件中的代码全部拷贝过来,自个儿看吧!
#include "mainwindow.h"
#include "ui_mainwindow.h"
/***************添加的头文件********************/
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/***************测试代码********************/
Mat img=imread("D:/test.jpg");//读取一张图片
imshow("Hello OpenCV", img); //显示图片
/***************测试代码********************/
}
MainWindow::~MainWindow()
{
delete ui;
}
然后编译运行,就可以看到有两个窗口弹出来,一个是QT自己的控件窗口,一个是你刚刚读取并显示的图片,哇咔咔,俺最喜欢的毛爷爷的《卜算子
⋅
\cdot
⋅咏梅》!
至此你就可以愉快地玩耍了!
VS编译器和MinGW编译器
由上面大家也可以看出来,我这里使用的是MinGW编译器,使用这种编译器的最大痛苦是需要自己对Opencv进行编译,中间过程繁琐,很难受。而如果要使用VS编译器的话一个得装VS,然后再设置两者的环境变量啥的(具体怎么装自个百度一下吧),也挺麻烦的,所以这里就只是使用了MinGW编译器,同时提供给大家所需全部文件!
但是这样只能在32位下做开发,如果想使用64位,则必须使用VS了,这种情况我也遇到过,需要在QT的编译选项中选择MSVC编译器。假设你的VS和QT都装好了(具体怎么装的就不说了,默认你装好了),但是你还没有配置OpenCV,此时同样也是很简单的,只需要把下载下来的OpenCV的文件夹(共享连接中也给出了一份,不过只能是VS14和VS15,就是那个.exe文件)拷贝到一个位置,然后配置环境变量(…\opencv\build\x64\vc15\bin),在QT中加入对应代码(就是头文件及库文件引用,对照着上文,相信你能写对!)即可直接使用,过程和上述方案类似!
其实它本身就是一个库了,如果使用VS编译器可以直接引用,但是如果使用MinGW编译器则需要编译一下再引用,这其实就是两者的区别而已!
总结
记录值的记录的事情,最近写博客觉得也挺不错的,多多把自己的经验分享给别人,也是极好的!不做搬运工,坚持原创!利用午休的时间写的这篇博文,虽然这个博客可能没有人看,但心里还是蛮开心的,好了,俺要睡觉了 !
如果有任何问题,请直接评论即可!