MinGW编译OpenCV4.5(64位/32位通用,附编译完成包下载)


前言

因为本人经常用MinGW编译器,而且习惯用64位,但是上网搜索配置方法发现很多都是32位的,而且版本差距太大的话成功率的也不是很高,不知道是不是我自己的原因,然后在面向浏览器搜索了两天之后,也摸索出了一个成功率比较高的方式
文章末尾附编译好的 库或ffmpeg文件 下载方式(编译好的库有 344/450/454 64&32 )


提示:以下是本篇文章正文内容,下面案例可供参考

一、适用版本

MinGW编译OpenCV4(64位/32位通用,附下载)Windows10/11+QT5.14.2+OpenCV4.5.4/OpenCV4.5.0+Cmake3.16.2

适用win11/10 ;
OpenCV 4.5.0 / 4.5.4
QT 编译器版本:mingw73_64/32

二、操作步骤

1.安装和准备需要的软件,设置环境变量

这个直接安装就可以了,不会安装的上网查找安装方式,一堆,没有别的操作,安装完注意配置环境变量
一般配置完环境变量需要重启电脑才能生效,不过有些电脑不需要重启也行;
这里说一个不用重启电脑就可以装载环境变量的方法;(这个方法不一定通用,保险还是重启一下吧)
1 首先设置好环境变量后;
2 在管理员模式终端输入以下命令,重新装载环境变量

	set PATH=C

3 退出上面的终端,重新开启一个管理员终端,然后再输入以下命令验证环境变量是否更新成功

	echo %PATH%

2.打开opencv文件位置

如果你是安装的OpenCV官方的Windows包,解压之后就会有以下两个文件夹

请添加图片描述

然后在里面新建一个文件夹用来存放编译的文件
在这里插入图片描述

3.配置CMake

按照你的路径选择源码位置 以及刚刚新建的保存位置文件夹
在这里插入图片描述
点击左下角Configure
在这里插入图片描述
选择编译器 MinGW Makefiles
选择指定本地编译器 Specify native compilers
点击下一步
C选择 gcc.exe
C++选择 g++.exe
按照图上配置 Fortran 不用管 空着
按照你的QT安装路径选择编译器,我现在是编译32位的 用32位的编译器,编译器64位的就选64位路径下的(32 与 64 在别的地方还有点区别等下会说)
在这里插入图片描述
点击Finish
然后就开始编译了
编译完成后显示如下 一大片红
在这里插入图片描述
这里会有报错
一般来说就是下载ffmpeg失败

CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  FFMPEG: Download failed: 6;"Couldn't resolve host name"

  For details please refer to the download log file:

  H:/OpenCV454/opencv/newbuild/CMakeDownloadLog.txt

Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
  modules/videoio/cmake/detect_ffmpeg.cmake:14 (download_win_ffmpeg)
  modules/videoio/cmake/init.cmake:7 (include)
  modules/videoio/cmake/init.cmake:11 (add_backend)
  cmake/OpenCVModule.cmake:298 (include)
  cmake/OpenCVModule.cmake:361 (_add_modules_1)
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:917 (ocv_register_modules)

去手动下载这个文件
先找到下载路径,在CMakeDownloadLog.txt文件中,这个文件在你创建的存放目录下
打开如下
在这里插入图片描述
里面有3个网址 只要下载前面两个红框里的就可以了,链接如下:

https://raw.githubusercontent.com/opencv/opencv_3rdparty/40b4666d1aa374205fd61373496e15d92ecd5313/ffmpeg/opencv_videoio_ffmpeg.dll
https://raw.githubusercontent.com/opencv/opencv_3rdparty/40b4666d1aa374205fd61373496e15d92ecd5313/ffmpeg/opencv_videoio_ffmpeg_64.dll

这个用浏览器打开,没有vpn一般下载不了;
我也是下载别人分享的,文章末尾有下载方式

下载完成之后,把这两个文件放在你安装OpenCV的源码路径下的如下文件夹位置

H:\OpenCV454\opencv\sources\3rdparty\ffmpeg

在这里插入图片描述
然后在CMake中修改几个选项
勾选 BUILD_opencv_world (这个也可以不选,勾选之后就是生成把全部库生成为一个库,不勾选就会生成一堆库)根据个人需求;我这里是勾选了)
勾选 WITH_OPENGL
勾选 WITH_OPENMP

不勾选 WITH_IPP
不勾选 WITH_OPENCL_D3D11_NV(这个好像只有windwos才有 ,取消勾选减少报错)
不需要勾选WITH_QT的操作(很多教程都要勾选,我是小白也不知道为啥,也不知道为啥不勾选,我这里没有勾选)
这里有个和别的教程不一样的操作
别的都要再点一次Configure
这里不用 配置好后直接点击 Genrate
完成之后 显示如下
在这里插入图片描述
Configuring done
Generating done

下一步就是万恶的编译过程了,这过程中有无数个和别人不同的问题,但是按照我这个来,我编译的时候64位没有出现问题,32位出现了一个小问题,等下会说

4.编译源码

在新建的文件路径下打开终端,执行以下命令(这个命令,不管是64位还是32位编译全都用mingw32-make.exe

mingw32-make.exe -j 8

后面的数字表示 编译时使用的核心数 ,根据自己电脑配置来
我在编译32位时,在67%时出现了下面这个错误
请添加图片描述
这个错误是没有vs_version.rc.obj这个文件(有时可能你打开这个文件位置,发现这个文件躺在那,没事,把它删掉就没有了)
没有这个文件那么就手动生成一个

不用关掉终端

首先找到
vs_version.rc这个文件 路径在

H:\OpenCV454\opencv\newbuild\modules\world\

然后使用 对应编译器版本的 windres.exe工具生成到下面这个路径

H:\OpenCV454\opencv\newbuild\modules\world\CMakeFiles\opencv_world.dir

windres.exe工具路径,根据自己编译的版本路径来,我下面这个是32位的路径

 H:\Qt5.14.2\Tools\mingw730_32\bin\windres.exe

使用命令(还是要强调路径,路径,路径,根据自己的路径修改下面的命令)

H:\Qt5.14.2\Tools\mingw730_32\bin\windres.exe .\vs_version.rc -O coff .\vs_version.rc.obj

在这里插入图片描述

生成完成后

再在刚才的终端 执行mingw32-make.exe命令接着编译
一般来说就没有问题了
请添加图片描述

5.生成库

接着在终端中执行

mingw32-make.exe install

等待执行完成完事了;
生成的库和头在下面路径

H:\OpenCV454\opencv\newbuild\install

然后就可以在qt中使用了

64位编译同上

6.资源下载

在这里插入图片描述
没积分的可通过图中的下载方式获取
有编译好的库 和 ffmpeg文件


总结

主要主要环境变量,和路径问题,大部分错误网上都有解决方法,
以上就是全部编译过程,小白写的不好的地方欢迎大家指正,或者你有什么要补充的也欢迎在下面留言补充;

  • 13
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值