QT5.8+Opencv3.2+Opencv_contrib-3.2.0环境配置

来源:互联网 发布:数据库事务是什么意思 编辑:程序博客网 时间:2024/05/17 22:58

QT5.8+Opencv3.2+Opencv_contrib-3.2.0环境配置

(Windows10_X64+Qt_5.8.0+Opencv3.2.0)

一、环境配置准备工作

1、Qt5.8.0下载:(qt-opensource-windows-x86-mingw530-5.8.0.exe)
安装路径:E:\Qt\QT5.8.0(可安装在任意盘,路径名不能有中文或空格
2、OpenCV-3.2.0下载:(选择此版本:Source code (tar.gz))
3、opencv_contrib-3.2.0下载
4、Cmake下载:cmake-3.8.0-win64-x64.zip

二、Cmake编译及安装

1、解压opencv-3.2.0.tar.gz

这里写图片描述

2、打开Cmake下载文件中的cmake_gui.exe,设置source code路径:E:/Program Files/opencv3.2/opencv-3.2.0(具体位置与自己opencv解压路径相关),设置build路径:E:/Program Files/opencv3.2/Qt_build

这里写图片描述

3、点击configure,选择MinGW Makefiles,选择Use default native compliers

这里写图片描述

配置成功时出现下图

这里写图片描述

4、勾选WITH_QT与WITH_OPENGL,设置OPENCV_EXTRA_MODULES_PATH为E:\ProgramFiles\opencv3.2\opencv_contrib-3.2.0\opencv_contrib-3.2.0\modules

这里写图片描述

再次点击configure,直到红色消失,这过程中Cmake会下载一些文件如opencv_ffmpeg.dll、opencv_ffmpeg_64.dll、protobuf-cpp-3.1.0.tar.gz、vgg_generated_64.i,速度很慢,大家自己可以到网上下载,这里就不给出了。
注:设置Qt的path:E:\Qt\Qt5.8.0\5.8\mingw53_32\bin;

5、两次configure(有时候会多点几次),再点击Generate,出现Generate done就成功了。

这里写图片描述

6、打开cmd,进入编译输出的文件夹路径(Qt_build文件夹下),输入mingw32-make,进行编译,编译成功后,输入mingw32-make install,进行安装。

这里写图片描述

这里写图片描述

7、进入install文件夹里面复制include,以及/x86/mingw下的bin和lib文件夹,单独建立Qt_Opencv3.2_contrub文件夹,并将上面3个文件夹复制到里面。

这里写图片描述

注:添加环境变量E:\Qt\Qt_Opencv3.2_contrib\bin;

三、Qt配置opencv3.2

在.pro文件添加如下头文件路径及库路径

INCLUDEPATH+=E:\Qt\Qt_Opencv3.2_contrib\include\opencv\             E:\Qt\Qt_Opencv3.2_contrib\include\opencv2\             E:\Qt\Qt_Opencv3.2_contrib\includeLIBS+= E:\Qt\Qt_Opencv3.2_contrib\lib\libopencv_*.a

四、Qt上opencv初体验

#include <opencv2/opencv.hpp>#include <opencv2/tracking.hpp>using namespace std;using namespace cv;int main(int argc, char** argv) {    Ptr<Tracker> tracker = Tracker::create("MEDIANFLOW");    VideoCapture video(0);    if (!video.isOpened())     {        cerr << "cannot read video!" << endl;        return -1;    }    Mat frame;    video.read(frame);    Rect2d box(270, 120, 180, 260);    tracker->init(frame, box);    {        tracker->update(frame, box);        rectangle(frame, box, Scalar(255, 0, 0), 2, 1);        imshow("Tracking", frame);        int k = waitKey(1);        if (k == 27) break;    }}

效果展示

这里写图片描述

觉得有帮助,麻烦点个赞

原创粉丝点击