QT+Cmake+opencv源码,编译成opencv库

配置环境:windows10
QT:5.12.0

准备的材料:
cmake-3.13.1-win64-x64.msi --》Cmake工具
opencv_contrib-3.4.4.zip —》别人做好的模块包,有什么人脸模块啊,啥的。如果不需要额外模块也可以不用下载
opencv-3.4.4-vc14_vc15.exe —》生成opencv源码
qt-opensource-windows-x86-5.12.0.exe --》qt creator 安装包

qt creator 下载链接:http://download.qt.io/archive/qt/5.12/5.12.0/?C=M;O=A
其他工具链接:https://pan.baidu.com/s/1fDUFLADDoWT9PubgLKl-GQ
提取码:tp21
(qt creator 安装步骤,先略过,这里默认已经安装了QT)
下面,上图,看步骤!!!

QT+Cmake+opencv源码,编译成opencv库_第1张图片

1.安装cmake

cmake的安装一定要选择 添加到环境变量(可以选择全部用户,也可以选择当前用户)
QT+Cmake+opencv源码,编译成opencv库_第2张图片

(我的老爷机安装完cmake后并没有检测到cmake工具,如果也有这种情况的小伙伴,安装完后要重启一下电脑,不然QT就检测不到Cmake工具当前环境。手动添加的话,后面编译成功概率不高)
QT+Cmake+opencv源码,编译成opencv库_第3张图片
在工具的选项下,看到这个自动生成的Cmake工具路径,恭喜你,成功了50%

这里先说一下我的编译的环境:版本是4.8.0的。QT 5.12.0
QT+Cmake+opencv源码,编译成opencv库_第4张图片

2.opencv 安装

直接打开opencv-3.4.4-vc14_vc15.exe ,
安装路径,自由选择 (比如:解压到c盘、D盘…)
我这里是源码路径 D:\opencv\sources
如果安装好后,会生成一个opencv包,打开里面会有一个 source的包

0)opencv项目

打开QT软件,点击编辑,然后将 source包里面的CMakeLists.txt 拖过去QT的项目框上。

如果有CMakeLists.txt.user这个文件,我建议把 “CMakeLists.txt.user” 先将这个文件删掉 ,再拖动编译
QT+Cmake+opencv源码,编译成opencv库_第5张图片

1)构建设置

1.拖动完CMakeLists.txt ,会自动跳转配置工程:
然后按照下图步骤( 进入【项目】,编译构造配置选择Release。)
QT+Cmake+opencv源码,编译成opencv库_第6张图片
然后等几分钟,这段时间 Qt 正在读取 CMakeLists.txt 文件,当在概要信息看到 Configuring done 和 Generating done 就读取完了。
QT+Cmake+opencv源码,编译成opencv库_第7张图片
如果构建时一直卡在FFMPEG: Download: opencv_ffmpeg.dll,解决方法:重新开机,可能是cmake环境没更新好
QT+Cmake+opencv源码,编译成opencv库_第8张图片

读取成功:
QT+Cmake+opencv源码,编译成opencv库_第9张图片

2)配置编译

1、进入【项目】,找到 WITH_MSMF关键字,把ON上的√去掉
QT+Cmake+opencv源码,编译成opencv库_第10张图片
2、设置安装路径
进入【项目】,找到 CMAKE_INSTALL_PREFIX,设置一个路径,这个路径是编译完成后输出的路径。(我这里是 C:\opencv\out )
out是我新建的一个文件夹

QT+Cmake+opencv源码,编译成opencv库_第11张图片

3、如果有需要添加额外模块的,可以修改变量:
OPENCV_EXTRA_MODULES_PATH
例如:
QT+Cmake+opencv源码,编译成opencv库_第12张图片
模块的话自己有需要就添加,模块就在 opencv_contrib-3.4.4 这个文件里面,modules这个文件夹下有很多模块的

4、选择安装
在构建步骤里的“详情”下,勾选 install
QT+Cmake+opencv源码,编译成opencv库_第13张图片
4、其他变量保持默认,点击应用配置,然后等待新的配置生成
QT+Cmake+opencv源码,编译成opencv库_第14张图片

5、新的配置生成后,应用配置按钮会变成灰色,说明成功了
QT+Cmake+opencv源码,编译成opencv库_第15张图片

**

3、OPENCV源码编译生成库

**

点击编辑,然后按一下运行的按钮就开始编译,最后漫长的等待…等待进度条加载完毕…
opencv源码编译完成后,会生成opencv库,生成的位置就是上面,我们设置 CMAKE_INSTALL_PREFIX 变量的值 (我这里是 C:\opencv\out )
QT+Cmake+opencv源码,编译成opencv库_第16张图片
如果之前 CMAKE_INSTALL_PREFIX 的路径下并没有生产库,可以在项目的构建下查看CMAKE_INSTALL_PREFIX 有没有保存。只要根据CMAKE_INSTALL_PREFIX 的值查找编译输出的文件就可以了

最后生成一个文件夹,里面有头文件和动态库等等,
QT+Cmake+opencv源码,编译成opencv库_第17张图片

4、创建QT项目(调用opencv库)

在D盘创建opencv\opencv64,把编译好的输出文件复制到这
QT+Cmake+opencv源码,编译成opencv库_第18张图片
1、创建一个Qt工程 mopencv,
在工程文件中添加头文件路径和添加编译用到的库的路径

//opencv用到的头文件路径

INCLUDEPATH +=D:\opencv\opencv64\include
INCLUDEPATH +=D:\opencv\opencv64\include\opencv
INCLUDEPATH +=D:\opencv\opencv64\include\opencv2

//opencv库的路径
LIBS += D:\opencv\opencv64\x64\mingw\lib\libopencv*

QT+Cmake+opencv源码,编译成opencv库_第19张图片
在mainwindow.cpp下编写

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include 
#include 
#include 
#include 
#include 
#include 
#include 

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
      //通过opencv采集图像显示
      cv::Mat vImage; //==>QImage
      cv::VideoCapture video(0);
      while(1)
      {
          video >> vImage;
          if(vImage.data == NULL)
          {

          }
          //灰度图
          cv::Mat outImage;
          cvtColor(vImage, outImage, CV_RGB2GRAY);

          imshow("video",outImage);
          imshow("image", vImage);
          cv::waitKey(1);
      }


}

如果不需要每个函数添加 cv::

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace cv;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
      //通过opencv采集图像显示
      Mat vImage; //==>QImage
      VideoCapture video(0);
      while(1)
      {
          video >> vImage;
          if(vImage.data == NULL)
          {

          }
          //灰度图
          Mat outImage;
          cvtColor(vImage, outImage, CV_RGB2GRAY);

          imshow("video",outImage);
          imshow("image", vImage);
          cv::waitKey(1);
      }


}

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

1、如果运行时出现这个,说明没有添加系统环境变量
QT+Cmake+opencv源码,编译成opencv库_第20张图片
2、新增运行运库
D:\opencv\opencv64\x64\mingw\bin 路径添加到系统环境变量,记得加分号,然后保存。从新运行
QT+Cmake+opencv源码,编译成opencv库_第21张图片

你可能感兴趣的:(opencv,opencv,QT,Cmake)