使用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系统化学习


深度学习系统化学习

推荐阅读

OpenCV4.8+YOLOv8对象检测C++推理演示

ZXING+OpenCV打造开源条码检测应用

攻略 | 学习深度学习只需要三个月的好方法

三行代码实现 TensorRT8.6 C++ 深度学习模型部署

实战 | YOLOv8+OpenCV 实现DM码定位检测与解析

对象检测边界框损失 – 从IOU到ProbIOU

初学者必看 | 学习深度学习的五个误区


OpenCV学堂 专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!
评论 (0)
  • 2024年10月09日  Global Info Research行业调研机构发布的《全球冲击型加速度传感器行业总体规模、主要厂商及IPO上市调研报告,2024-2030》分析了全球冲击型加速度传感器总体规模,主要地区规模,主要企业规模和份额,主要产品分类规模,下游主要应用规模等。统计维度包括收入和市场份额等。不仅全面分析全球范围内主要企业竞争态势,收入和市场份额等。同时也重点分析全球市场主要厂商(品牌)产品特点、产品规格、收入、毛利率及市场份额、及发展动态。历史数据为2019至202
    GIRtina 2024-10-09 10:29 65浏览
  • 2024年10月09日 调研机构Global Info Research出版了《全球自动化微孔板热封仪行业总体规模、主要厂商及IPO上市调研报告,2024-2030》。本报告主要分析全球自动化微孔板热封仪总体规模,主要地区规模,主要企业规模和份额,主要产品分类规模,下游主要应用规模等。规模分析包括收入和市场份额等。深入分析了全球范围内主要企业竞争态势,收入和市场份额等,同时也重点分析全球市场主要厂商(品牌)产品特点、产品规格、收入、毛利率及市场份额、及发展动态。历史数据为2019至2023年,预
    GIRtina 2024-10-09 10:22 75浏览
  • 1.引言 汽车进入智能化时代,自动泊车功能已成为标配。在研发测试阶段,实车测试面临测试场景覆盖度不足、效率低下和成本高昂等挑战。为解决这些问题,本文提出一种自动泊车HiL仿真测试系统方案,可大幅度提升测试效率及测试场景覆盖度、缩短测试周期、加速产品迭代升级。 2.自动泊车系统简介 多传感器融合的自动泊车技术结合了超声波雷达和摄像头来实现车位探测和环境感知。超声波雷达通过实时探测周围障碍物的距离,结合车辆自身的长宽,判断是否存在可泊入的空间车位,而摄像头则通过实时图像
    北汇信息 2024-10-09 13:43 20浏览
  • 2024年10月09日  Global Info Research行业调研机构发布的《全球钻孔探地雷达行业总体规模、主要厂商及IPO上市调研报告,2024-2030》分析了全球钻孔探地雷达总体规模,主要地区规模,主要企业规模和份额,主要产品分类规模,下游主要应用规模等。统计维度包括收入和市场份额等。不仅全面分析全球范围内主要企业竞争态势,收入和市场份额等。同时也重点分析全球市场主要厂商(品牌)产品特点、产品规格、收入、毛利率及市场份额、及发展动态。历史数据为2019至2023年,预测数
    GIRtina 2024-10-09 10:33 55浏览
  • 探针台(Probe Station)是一种用于对半导体器件进行电性能测试的重要设备。它通常由精密的机械结构、高性能的探针针头和电性能测试仪器组成。探针台可以对半导体芯片、集成电路和其他微电子器件进行直接的电性能测试,从而为研究和生产提供有价值的信息。探针台在半导体行业的研究和生产中发挥着重要作用。主要应用领域包括:半导体器件开发:在新型半导体器件的研发过程中,需要对其电性能进行多次测试,以优化器件结构和工艺参数。探针台提供了快速、准确的电性能测试手段,有助于研究人员了解器件性能并进行改进。生产过
    锦正茂科技 2024-10-09 10:33 12浏览
  • 随着电子技术的不断发展,越来越多的精密细小器件逐步开放和增长,作为对细小器件检测的bi备仪器—探针台也显得越来越重要。探针台可以将待测器件进行放大几十到上千倍,可将微观层面的东西搬到宏观上来进行研究,连接测试仪器仪表进行测量。那么如何选择一款适合的探针台显得尤为重要。第一,我们需要选择合适尺寸的样品座,会有2英寸、4英寸、6英寸、8英寸和12英寸之分,如果我们测试的样品是大的晶圆或器件,我们还需要注意的是,探针是否能满足扎到样品的任意位置。第二,我们选用探针臂的数量和类型,可以zui多同时搭载6
    锦正茂科技 2024-10-09 13:07 27浏览
  • 2024年10月08日 Global Info Research调研机构发布了《全球电池绝缘纸粘贴机行业总体规模、主要厂商及IPO上市调研报告,2024-2030》。本报告研究全球电池绝缘纸粘贴机总体规模,主要地区规模,主要企业规模和份额,主要产品分类规模,下游主要应用规模等。统计维度包括收入和市场份额等。不仅全面分析全球范围内主要企业竞争态势,收入和市场份额等。同时也重点分析全球市场主要厂商(品牌)产品特点、产品规格、收入、毛利率及市场份额、及发展动态。历史数据为2019至2023年,预测数据
    GIRtina 2024-10-08 14:27 77浏览
  • 本文介绍Android7.1修改网络优先级方法,基于触觉智能SBC3968主板,搭载瑞芯微RK3399芯片,这块主板的网络优先级默认是网口>WiFi>4G,下面就手把手教大家怎么修改。1、查看当前网络优先级数值源码根目录下执行以下命令查看网口命令(复制后删除换行)cat frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.javagrep NETWORK_SCORE由结果priva
    Industio_触觉智能 2024-10-09 12:15 31浏览
  • 2024年10月09日 Global Info Research调研机构发布了《全球多通道数字局部放电检测仪行业总体规模、主要厂商及IPO上市调研报告,2024-2030》。本报告研究全球多通道数字局部放电检测仪总体规模,主要地区规模,主要企业规模和份额,主要产品分类规模,下游主要应用规模等。统计维度包括收入和市场份额等。不仅全面分析全球范围内主要企业竞争态势,收入和市场份额等。同时也重点分析全球市场主要厂商(品牌)产品特点、产品规格、收入、毛利率及市场份额、及发展动态。历史数据为2019至20
    GIRtina 2024-10-09 09:48 41浏览
  • 2024年10月09日 Global Info Research调研机构发布了《全球脉冲函数任意噪声发生器行业总体规模、主要厂商及IPO上市调研报告,2024-2030》。本报告研究全球脉冲函数任意噪声发生器总体规模,主要地区规模,主要企业规模和份额,主要产品分类规模,下游主要应用规模等。统计维度包括收入和市场份额等。不仅全面分析全球范围内主要企业竞争态势,收入和市场份额等。同时也重点分析全球市场主要厂商(品牌)产品特点、产品规格、收入、毛利率及市场份额、及发展动态。历史数据为2019至2023
    GIRtina 2024-10-09 10:24 57浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦