首页 > 其他分享 >MinGW编译OpenCV4.5(64位/32位通用,附编译完成包下载)

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

时间:2022-12-21 17:04:58浏览次数:51  
标签:路径 cmake opencv 32 OpenCV4.5 编译 64

前言

因为本人经常用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包,解压之后就会有以下两个文件夹

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


然后在里面新建一个文件夹用来存放编译的文件

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

3.配置CMake

按照你的路径选择源码位置 以及刚刚新建的保存位置文件夹

MinGW编译OpenCV4.5(64位/32位通用,附编译完成包下载)_环境变量_03


点击左下角Configure

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


选择编译器 MinGW Makefiles

选择指定本地编译器 Specify native compilers

点击下一步

C选择 gcc.exe

C++选择 g++.exe

按照图上配置 Fortran 不用管 空着

按照你的QT安装路径选择编译器,我现在是编译32位的 用32位的编译器,编译器64位的就选64位路径下的(32 与 64 在别的地方还有点区别等下会说)

MinGW编译OpenCV4.5(64位/32位通用,附编译完成包下载)_环境变量_05


点击Finish

然后就开始编译了

编译完成后显示如下 一大片红

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


这里会有报错

一般来说就是下载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文件中,这个文件在你创建的存放目录下

打开如下

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


里面有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

MinGW编译OpenCV4.5(64位/32位通用,附编译完成包下载)_环境变量_08


然后在CMake中修改几个选项

勾选 BUILD_opencv_world (这个也可以不选,勾选之后就是生成把全部库生成为一个库,不勾选就会生成一堆库)根据个人需求;我这里是勾选了)

勾选 WITH_OPENGL

勾选 WITH_OPENMP不勾选 WITH_IPP

不勾选 WITH_OPENCL_D3D11_NV(这个好像只有windwos才有 ,取消勾选减少报错)

不需要勾选WITH_QT的操作(很多教程都要勾选,我是小白也不知道为啥,也不知道为啥不勾选,我这里没有勾选)

这里有个和别的教程不一样的操作

别的都要再点一次Configure

这里不用 配置好后直接点击 Genrate

完成之后 显示如下

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


Configuring done

Generating done

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

4.编译源码

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

mingw32-make.exe -j 8

后面的数字表示 编译时使用的核心数 ,根据自己电脑配置来

我在编译32位时,在67%时出现了下面这个错误

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


这个错误是没有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

MinGW编译OpenCV4.5(64位/32位通用,附编译完成包下载)_环境变量_11

生成完成后

再在刚才的终端 执行mingw32-make.exe命令接着编译

一般来说就没有问题了

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

5.生成库

接着在终端中执行

mingw32-make.exe install

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

H:\OpenCV454\opencv\newbuild\install

然后就可以在qt中使用了

64位编译同上

6.资源下载

MinGW编译OpenCV4.5(64位/32位通用,附编译完成包下载)_环境变量_13

总结

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



标签:路径,cmake,opencv,32,OpenCV4.5,编译,64
From: https://blog.51cto.com/u_15919488/5959981

相关文章

  • 第一个win32程序
    #include<Windows.h>//自定义过程函数//参数HWND:窗口的句柄message:消息ID附加消息信息附加消息信息longCALLBACKMyWndProc(HWNDhwnd,UINTmessage,WPARAM......
  • 正点原子STM32-串口协议学习笔记
    bit15bit14bit13~0接收完成标志接收到0x0d接收到的有效字节数过程:接收abcd然后/n最后立结束标志位为1对数组USART2_RX_BUF[]处理时,发现数组不......
  • Java实现多种语言编译运行
    Java实现多种语言编译运行摘要:在Java开发过程中,经常会遇到使用Java实现某一个功能比其他语言要复杂,因此通常将该功能使用其他编程语言来完成后,再通过Java调用编译程序编译运......
  • Ubuntu18.04TLS系统下用Pycharm打开conda虚拟环境编译py文件
    首先找到conda的虚拟环境所在的位置,输入命令行​​condaenvlist​​​,效果如下:绿色为创建虚拟环境的命令,蓝色为虚拟环境的名称,紫色为虚拟环境在Ubuntu18.04TLS系统下的......
  • Java @SuppressWarnings(抑制编译器警告)的关键字
    @SuppressWarnings(抑制编译器警告)的关键字关键字用途all抑制所有警告boxing抑制装箱、拆箱操作时候的警告cast抑制映射相关的警告dep-ann抑制启用......
  • 20221322 实验八-Web部署 实验报告
    Web部署(openEuler中基于LAMP部署WordPress)实验过程一、配置openEuler华为云openEuler安装后,没有配置yum源,我们通过重新配置。cd/etc/yum.repos.dviopenEuler_x86......
  • MyBatis源码分析(二)prepareStatement预编译的执行流程
    通常我们如果自己写建立数据库连接的代码的时候,都会这么写pstmt=conn.prepareStatement(sql);pstmt.setString(1,email);result=pstmt.executeQuery();而Mybatis是怎么......
  • D10.4开发的安卓程序,D11编译报错的解决方法
    D10.4开发的安卓程序,D11编译报错的解决方法如果用D11打开工程,10.4下很多自带的jar都已经被去除了如果立即编译的话,会报错:这个时候,你只要右键Libraries,在弹出的菜单中......
  • RS232接口电路
    1. DB9串口引脚定义        2. RS232简介    (1)逻辑0:+3~+15V        逻辑1: -3~-15V    (2)传输速率<1M,传输距离......
  • STM32F103使用FSMC对接正点原子3.5寸TFTLCD屏幕
    fsmc的使用算是32里面有点绕的一个知识点,但是想明白了其实也没啥了。  首先我先放32个0在这儿:0000  0000  0000  0000  0000  0000  0000  0000  ......