专栏名称: OpenCV学堂
一个致力于计算机视觉OpenCV原创技术传播的公众号!OpenCV计算机视觉与tensorflow深度学习相关算法原创文章分享、函数使用技巧、源码分析与讨论、,计算机视觉前沿技术介绍,技术专家经验分享,人才交流,学习交流。
目录
相关文章推荐
新疆949交通广播  ·  受降雪影响,新疆两个5A级景区临时闭园 ·  8 小时前  
三易菌  ·  借助生成式AI,亚马逊语音助手Alexa“活 ... ·  9 小时前  
三易菌  ·  借助生成式AI,亚马逊语音助手Alexa“活 ... ·  9 小时前  
佳木斯广播电视台  ·  微信又有新功能,进一步瘦身 ·  18 小时前  
佳木斯广播电视台  ·  微信又有新功能,进一步瘦身 ·  18 小时前  
南京广播电视台  ·  账号清空!她的全网作品被下架 ·  2 天前  
51好读  ›  专栏  ›  OpenCV学堂

使用MinGW编译OpenCV4源码与配置使用演示

OpenCV学堂  · 公众号  ·  · 2024-09-10 23:28

正文

点击上方 蓝字 关注我们

微信公众号: OpenCV学堂

关注获取更多计算机视觉与深度学习知识

QT在Windows上安装好之后,常规会两种编译器选择分别是:

-VS2015/2017/2019....-mingw

因为我安装了VS2015,所以一直是默认VS来编译,但是发现当从VS编译切换到mingw时候,OpenCV的windows版本就无法正确的使用了。这个时候要求首先通过mingw来编译OpenCV的源码,重新生成OpenCV库文件与dll文件。本文就详细记录了这个过程。而且最后通过编译好的OpenCV集成配置QT开发环境,实现了一个简单的测试程序。

软件版本与环境配置


版本信息

Windows10 64位QT5.13 64位OpenCV4.2CMake3.17.1

下载地址:

https://opencv.org/opencv-4-2-0/ https://cmake.org/


环境配置

在安装好QT,CMake与OpenCV下载解压缩之后,首先到QT的目录下,找到mingw编译工具的bin目录,添加到系统环境变量中去,本人安装好的QT中mingw工具的bin目录路径如下:

D:\Qt\Qt5.13.1\Tools\mingw730_64\bin

编译OpenCV源码


编译OpenCV源码主要分为如下几步:

01

cmake配置与生成


双击打开安装好的cmake

选择好souce路径与build路径,本人的分别为:

D:/opencv-4.2.0/opencv/sourcesD:/opencv-4.2.0/opencv/newbuild

然后点击 【configure】,就会弹出如下对话框, 请选择mingw makefiles


然后分别设置

C编译器D:\Qt\Qt5.13.1\Tools\mingw730_64\bin\gcc.exe C++编译器D:\Qt\Qt5.13.1\Tools\mingw730_64\bin\g++.exe


运行完成之后,参见如下选项进行配置

- 勾选 WITH_OPENGL- 勾选 WITH_OPENMP- 勾选 BUILD_opencv_world- 不勾选 WITH_OPENCL_D3D11_NV

然后再点击【generate】按钮,执行完成即可。


注意

这个过程中你最有可能遇到的错误就是无法下载ffmpeg库的问题,解决方法也很容易,让可以下载的人给你下载,然后直接copy到你的opencv\sources\3rdparty\ffmpeg目录下即可。然后再次点击【generate】按钮即可。

02

生成安装文件


cmake完成之后,打开cmd,切换到build目录下,首先执行如下的命令行参数

mingw32-make -j 8

回车之后,就看到如下开始执行了,画面如下:

大概5~10min左右(取决电脑速度)如果没有报错,就会到达100%完成。然后执行下一个命令行参数

mingw32-make install

大概在几十秒即可很快执行完成,执行完成之后你就会在这个目录得到编译好的库与dll文件。

D:\opencv-4.2.0\opencv\newbuild\install


很直接的把生成的dll所在路径添加到环境变量中,这里为:

D:\opencv-4.2.0\opencv\newbuild\install\x64\mingw\bin

使用OpenCV+QT实现图像显示


通过一个简单的OpenCV读取图像,在QT中QLabe显示来验证上述编译好的库可以使用。直接通过QT Creator来新建一个QT Application程序,导入OpenCV库依赖(不知道怎么操作,请看结尾的链接,通过视频学习即可!),然后在mainwindow.cpp中实现如下代码:

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QHBoxLayout *layout = new QHBoxLayout(ui->centralwidget);
    QLabel *label = new QLabel();
    layout->addWidget(label);
    cv::Mat mat = cv::imread("D:/images/pedestrain_01.jpeg");
    cv::cvtColor(mat, mat, cv::COLOR_BGR2RGB);
    QImage img = QImage(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_RGB888);
    int w = img.width();
    int h = img.height();
    if(w > 800 || h > 800) {
        double rate = 800.0 / std::max(w, h);
        int nw = static_cast<int>(rate * w);
        int nh = static_cast<int>(rate * h);
        img = img.scaled(QSize(nw, nh), Qt::KeepAspectRatio);
    }
    QPixmap mp;
    mp=mp.fromImage(img);
    label->setPixmap(mp);
    label->setAlignment(Qt::AlignCenter);
    mat.release();
}

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


记得创建项目的选择编译器为mingw啊,然后选择构建为release。直接运行,显示如下:

最后怕写的不太好,给大家录了个实操的视频,教大家如下一步一步基于QT搭建OpenCV开发环境。

B站视频版本


https://www.bilibili.com/video/BV1Za4y1v7ra


OpenCV4系统化学习







请到「今天看啥」查看全文