Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6

  • 导语
    • 1.下载opencv
      • 1.1进入opencv官网,点击release,
      • 1.2进入OpenCV github网站,下载opencv_contrib扩展模块。
    • 2.Qt5.12.0下载
      • 2.1 进入Qt官网,下载Qt开源版。
      • 2.2 qt的安装
      • 2.3更新qt,添加MSVC 2013 32 bit编译器
    • 3.Visual Studio 2017 下载
    • 4.CMake下载
    • 5.使用cmake编译opencv。
    • 6.在VS 2017中生成OpenCV库文件
    • 7.在Qt 项目中进行配置opencv
    • 8.在VS 2017添加Qt插件
    • 9.配置系统opencv环境变量
    • 10.在VS 2017中创建qt项目,配置opencv环境
  • 总结

导语

看标题就觉得这是一个复杂环境配置过程,先说一下为什么要配置这些环境。最近再做一个图像软件的开发,其中用到了大华相机,而它是不支持qt的MinGW编译器的。另外opencv的win pack中,只包含了MSVC 2015 64位编译器的预构二进制文件,这与我要使用的32位版本不兼容,所以要自己重新编译opencv。至于为什么要使用32位的版本,这是项目前人定下的就没有改。

opencv通常不会为所有编译器和平台提供预构建的二进制文件,事实上,opencv并没有为macOS和Linux提供预构建的二进制文件。可以使用cmake进行构建。

我们为什么需要cmake?为什么不能只给出库以及用它来做什么呢?
互联网上大多数开源框架和库,或者至少是那些想要保持IDE中性的开源框架和库,都使用CMake或类似的make系统。这里我们需要Cmake以便能够使用源代码来配置和构建opencv。

1.下载opencv

1.1进入opencv官网,点击release,

(https://opencv.org/releases/)。

选择需要的版本下载,我这里使用windows 10环境,下载之后是一个.exe文件

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第1张图片

下载安装过程就是一个解压过程,安装之后目录如下:

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第2张图片

1.2进入OpenCV github网站,下载opencv_contrib扩展模块。

opencv_contrib(https://github.com/opencv/opencv_contrib)

点击release,选择opencv对应的版本就好

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第3张图片

下载zip文件

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第4张图片

解压的时候我把它解压到opencv目录下了,方便找到:

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第5张图片

2.Qt5.12.0下载

2.1 进入Qt官网,下载Qt开源版。

Qt官网(http://download.qt.io/)
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第6张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第7张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第8张图片

2.2 qt的安装

基本上都是点下一步,选择组件的时候我选择下来4个编译器如下:

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第9张图片
注意,正如在这里看到的,qt5.12默认是没有MSVC 2013 32 bit编译器的,而我的项目需要用到这个,至于为什么我在前面导语已经说过了
qt5.8中是有MSVC 2013 32 bit编译器的,所以安装完成后要添加这个组件

2.3更新qt,添加MSVC 2013 32 bit编译器

打开控制面板,依次点击程序–程序和功能–找到Qt5.12.0,双击

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第10张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第11张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第12张图片

点击next – skip – 选择添加或移除组件 – 下一步

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第13张图片

点击下一步之后会出现这个问题,我们点击设置,添加一个临时存储库,我这里使用清华大学的开源镜像站https://mirrors.tuna.tsinghua.edu.cn/qt/online/qt5/windows/x86/online_repository/

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第14张图片

输入网址,点击测试,成功之后点击ok

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第15张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第16张图片

重新点击next – skip – 选择添加或移除组件 – 下一步出现警告后点击右上角的关闭,在点右下角退出

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第17张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第18张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第19张图片
等它更新完了就可以了。

3.Visual Studio 2017 下载

官网找到旧的下载项:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
安装的时候 选择 使用C++的桌面开发
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第20张图片

4.CMake下载

官网:https://cmake.org/download/
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第21张图片

5.使用cmake编译opencv。

安装过程基本上没什么问题。各个软件安装好之后,开始使用cmake编译opencv。

打开cmakeGUI工具,在bin目录下

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第22张图片

source code选中opencv/sources目录,build libraries选中一个新的目录,方便管理。我这里是新建一个contrib_build目录。

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第23张图片

点击configure, 选择Win32

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第24张图片

configure完成后,出现红色,勾选BUILD_opencv_world,这将允许把所有opencv模块构建到一个库中。同时这个时候可以添加扩展模块,再次点击congfigure

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第25张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第26张图片

configure完成且不出现红色界面后,点击Generate,至此,OpenCV编译完成,接下来在VS 2017中生成OpenCV库文件。

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第27张图片

6.在VS 2017中生成OpenCV库文件

打开VS 2017,打开Cmake时设置的contrib_build目录的OpenCV.sln解决方案。
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第28张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第29张图片
打开之后,点击生成–批生成,英文为Build–Batch Build。
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第30张图片

选中“ALL_BUILD”和“INSTALL”的复选框,如下,点击生成

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第31张图片

生成的过程比较漫长,大概需要半个小时左右。生成后会在contrib_build目录下生成一个install目录。

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第32张图片

7.在Qt 项目中进行配置opencv

这里涉及项目代码隐私、知识产权,我就以新建一个项目为例:

打开Qt Creator4.8 ,在开始菜单栏中可以找到
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第33张图片

打开之后,新建一个项目,默认下一步就好。

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第34张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第35张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第36张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第37张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第38张图片

创建项目完成之后,点击.pro文件修改,添加opencv路径

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第39张图片

添加opencv的库,右击项目,选择添加库

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第40张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第41张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第42张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第43张图片

完成之后,.pro文件中会多了一段如下代码:

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第44张图片

修改完成之后,要右击项目,执行qmake

修改mainwindow.cpp文件如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "opencv2/opencv.hpp"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    cv::Mat dog=cv::imread("D:/dog.jpg");
    cv::imshow("ss",dog);
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行结果如果可以打开一张图片,就说明在qt中使用msvc 2013 32bit构建工具编译opencv就没有问题了。

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第45张图片

8.在VS 2017添加Qt插件

点击工具–扩展和更新

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第46张图片

搜索qt,下载

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第47张图片

下载之后 重启 工具栏会出现QT插件
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第48张图片

点击add

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第49张图片

path路径选择编译器的目录,会自动识别,补上Name
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第50张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第51张图片

9.配置系统opencv环境变量

路径是\contrib_build\install\x86\vc14\bin;我的如下:
D:\opencv\opencv346\contrib_build\install\x86\vc14\bin;

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第52张图片

10.在VS 2017中创建qt项目,配置opencv环境

新建一个qt工程

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第53张图片Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第54张图片
在这里插入图片描述
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第55张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第56张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第57张图片

C++目录->包含目录,编辑,添加 D:\opencv\opencv346\contrib_build\install\include
D:\opencv\opencv346\contrib_build\install\include\opencv
D:\opencv\opencv346\contrib_build\install\include\opencv2

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第58张图片

C++目录->库目录,编辑,添加
D:\opencv\opencv346\contrib_build\install\x86\vc15\lib

在这里插入图片描述

链接器->输入->附加依赖项,编辑,添加
opencv_world346d.lib

Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第59张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第60张图片
Qt 5.12使用MSVC 2013 32bit 编译器+使用visual studio 2017、cmake编译opencv3.4.6环境配置与示例演示_第61张图片

总结

配置环境的过程异常艰难,重装了很多遍,走了很多弯路,究其原因就是涉及的环境配置比较复杂,而且没有环境配置文档。

按照我写的这个过程应该会减少很多坑,如果有其它问题,可以私聊我!

你可能感兴趣的:(opencv,visual,studio,Qt5.12,MSVC2013,vs2017,cmake,opencv3.4.6)