openCV编译安装-MSCV-Windows10-Qt💛

文章目录

  • openCV编译安装-MSCV-Windows10-Qt💛
  • @[toc]
  • 1、准备工作 💢
  • 2、解压👍
  • 3、Cmake编译🐹
  • 4、添加环境变量 🎎
  • 5、使用🙌

1、准备工作 💢

  • CMake:下载最新版本即可
  • openCV:下载任意版本,可以下载源码或者官方编译好的VS版(其中也带有源码),我下载的是opencv-4.5.2-vc14_vc15.exe
  • Visual Studio:这里使用的是2017
  • Qt:下载5.14

2、解压👍

  • opencv-4.5.2-vc14_vc15.exe运行后会自解压到当前路径下的opencv文件夹中,如下图所示,其中build文件夹为官方已经编译好的,sources为源码;

3、Cmake编译🐹

  • 创建一个build文件夹,打开安装好的CMake软件,讲sources文件夹中的CMakeLists.txt拖到Cmake中,然后点击Browse Build讲路径设置为刚才创建的build。
  • opencv安装显示could not find_qt

  • 点击Configure,选择2017,x64,这里注意如果安装了多个版本的vs需要选择Specify native compilers,如下图配置好后点击Finish,然后等待几分钟。

opencv安装显示could not find_opencv_02

  • 可以选择勾选BUILD_opencv_world,这样编译的所有的库将会生成一个opencv_world420.lib和一个opencv_ts420.lib,方便使用时打包,不勾选将会生成多个库文件。

opencv安装显示could not find_编译器_03

  • 再点击一次Configure,全部变白后就可以点击Grenerate生成sln

opencv安装显示could not find_cmake_04

  • 然后点击open Project打开生成的openCV.sln工程

opencv安装显示could not find_opencv_05

4、Visual Studio编译

  • 选择Release、x64

opencv安装显示could not find_cmake_06

  • 右键选择ALL_BUILD -> 点击生成重新生成,就开始编译了,时间会比较长;
  • 编译完成后右键选择INSTALL -> 点击生成重新生成,将会在build文件夹下生成一个install文件夹,这个文件夹下就是我们编译好的文件。

opencv安装显示could not find_msvc_07

opencv安装显示could not find_msvc_08

4、添加环境变量 🎎

  • 将编译好的install文件夹复制到自己喜欢的路径下,命名为opencv(名称随意)
  • 打开系统属性 -> 环境变量

opencv安装显示could not find_cmake_09

  • 添加编译的库文件的路径,然后重启电脑

opencv安装显示could not find_编译器_10

5、使用🙌

  • 创建一个qt工程,编译器选择与编译opencv相同的编译器,这里使用的是MSVC2017
  • 右键工程,选择添加库

opencv安装显示could not find_qt_11

  • 选择opencv_world.lib

opencv安装显示could not find_qt_12

  • 然后会生成如下图所示代码,注意如果没有编译debug版本(就是没有opencv_world***d.lib),需要将下列第二行代码删掉

opencv安装显示could not find_qt_13

  • /x64/vc15 改为 include

opencv安装显示could not find_cmake_14

  • 添加头文件

#include <opencv2/opencv.hpp>

  • 添加命名空间

using namespace cv;

  • 输入如下代码就可以显示图片了
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    Mat image = imread("E:/tp/img/1.png");
    imshow("image", image);

}

Widget::~Widget()
{
    delete ui;
}
  • 效果如下所示 👎 👌 👊 👊 ✊ ✌️ 👋 ✋ ✋ 👐 ☝️ 👇 👈 👉 🙌 🙏 👆 👏 💪 🤘 🖕