Windows安装OpenCV——利用MinGW+CMake从源码编译

2023-05-16

从源码编译(使用MinGW)

从源码编译一般是为了定制一些安装选项,比如想要获取samples、希望交叉编译安装cuda、需要安装contrib模块。此教程是通过MinGW+CMake完成opencv的编译。因此你需要安装CMake:Download | CMake 和MinGW(MinGW建议通过Msys2安装,直接去Msys2的官网跟着教程走就能完成安装:MSYS2,注意把mingw的路径添加到系统环境变量)

注意若安装opencv4.5以上的版本,建议升级gcc的版本到最新版。

  1. 以最新版的opencv为例4.5.5),首先从OpenCV官方的仓库中下载你想要安装的版本的opencv源代码:GitHub - opencv/opencv: Open Source Computer Vision Library。左上角的branch处可以选择安装的版本(通过切换tag)。若你希望安装contrib包,同样在opencv的仓库里:GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules 。特别注意,contrib的版本需要和opencv版本一致

  2. 下载好之后,将两个压缩包都解压到同一个目录下,进入opencv的文件夹,新建一个build文件夹。此时打开CMake,选择源代码路径(where is the source code)为opencv文件夹,生成二进制文件路径(where to build the binaries)为build文件夹,点击开始编译(configure),选择makefile系统为MinGW

  3. 编译过程中需要下载一些文件和依赖,如果有梯子就先挂着然后再开始configure,如果没有,最常见的错误就是有些文件可能下载不下来,一般是ffmpeg的动态链接库和ade。这就需要我们去github对应的页面上下载这些文件,并进行替换(可能同时还需要修改哈希校验码使得我们的文件和原本要下载的校验码一致)。笔者在这里已经为你准备好了常见的无法下载的链接库和包,戳这里:百度网盘 请输入提取码 , 提取码:ttd7。

  4. 第一遍cmake完成后,发现上面一栏有很多东西变红了,这并不是报错,而是说明有选项发生变化。在这里可以选择自定义编译选项,作为初学者,我们要修改的有这几项:

    1. build type

      填入Release会编译发行版本的opencv包,从而去除debug信息和符号表,这可以提高性能;填入Debug则会编译debug版本的opencv(这是给需要深度开发opencv修改源码的人用的),而一般我们不需要深入opencv的源代码进行debug。

    2. pkg-config

      这会生成一个pkg-config的路径使得pkgconfig能够自动传递库路径给g++进行编译。

    3. build_opencv_world

       这一选项会使得生成的链接库为一个包而不是多个。

    4. extra_module

       如果你不需要附加模组,不需要填写此项!此项填入的是contrib包中的附加模组的路径,即刚刚下载的opencv_contrib-x.x.x(x为你下载的版本)。注意在选择的时候一定要点击进入modules文件夹而不是单击他:

      正确范例,双击进入modules文件夹后再点击选择文件夹

    配置完以上四项后,再次configure,如果刚才有文件无法下载估计这次还是会有无法下载的东西,一般是boostdesc、vgg、facelandmark、wechatqrcode等。用前述同样的方法即可(笔者这里准备好了常见的无法下载的链接库和包,戳这里:百度网盘 请输入提取码 , 提取码:ttd7)

    如果你希望自定义更多选项,可以参考此官方链接:config reference

    确认无红色报错之后点击generate。

    cmake配置完成

    成功生成makefile

  5. 现在开始编译,在build文件夹中打开cmd或者终端或者其他类shell工具,输入:

    mingw32-make 
    # 可以加上参数 -jx,其中x为线程数,根据你电脑的配置来选,一般为cpu核心数的两倍
    # 务必确保已经把mingw的bin文件夹加入PATH环境变量,这样系统才能找到mingw32-make.exe

    开始编译

    ​静候5 - 70 mins不等(电脑配置不同)。

    编译完成后,输入:

    mingw32-make install

    开始安装库,很快就好。

     成功安装动态库到对应路径(若没有修改则是默认路径)。

  6. 还需要添加opencv的库路径和路径到系统的环境变量中的PATH

    win+S打开搜索界面,输入“编辑系统环境变量 ”:

     打开以后,点击环境变量

    1.首先,点击新建,创建一个新的环境变量:

    变量名为OpenCV_DIR,路径为刚刚我们编译opencv时新建的build下的install:

    可以看到,这个路径下有两个cmake文件,让cmake在构建makefile的时候可以确定opencv的版本和头文件等的位置。

    2.再双击PATH,在PATH中新增一条:

    可以看到,因为我们在cmake构建的时候选择了opencv_world的选项,因此最后只会生成一个动态链接库libopencv_world455.dll。这里还有一些第三方库(3rdparty中的内容),和一些其他必须的可执行程序。

  7. 最后测试安装是否成功

     cmake正确生成了Makefile并编译成功,正确运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows安装OpenCV——利用MinGW+CMake从源码编译 的相关文章

  • CMake第三方库安装

    我是编程新手 对于我的研究项目 我需要安装一个第三方库以便与 CMake 一起使用 GitHub项目 https github com cpp io2d P0267 RefImpl blob master BUILDING md 我在我的电
  • 如何将k4a_image_t转换为opencv矩阵? (Azure Kinect 传感器 SDK)

    我开始尝试使用 Azure Kinect Sensor SDK 我经历了官方操作指南 https learn microsoft com en us azure Kinect dk about sensor sdk sensor sdk 我
  • 在 Windows 上将 Mercurial (hg) 存储库转换为 Git (7)

    我现在真的很沮丧 我有一个现有的 hg 存储库 其中有几个月的编码历史 我想将其放入私有 Github 存储库中 以便我可以从那里对其进行处理 不幸的是我使用的是 Windows 我似乎找不到any转换我实际上可以正常工作的存储库的方法 实
  • RabbitMq 和“致命错误:握手失败 -handshake_decode_error”

    我正在使用 Windows Server 2012 Erlang 19 2 和 RabbitMq 3 6 6 我在使用 TLS 配置端点之间的连接时遇到问题 我已经尝试了所有关于 SO 的答案 以及所有 RabbitMq 文档here ht
  • 使用 IDLE 编辑的 .py 文件消失了

    我曾经有过Edit with IDLE当我右键单击时的选项 py文件 但我多次卸载 重新安装以使某些东西正常工作 但现在它消失了 我检查了注册表HKEY CLASSES ROOT and HKEY LOCAL MACHINE对于价值低于Py
  • Python 无法在 git bash 命令行中工作

    Python 不会在 git bash Windows 中运行 当我在命令行中输入 python 时 它会将我带到一个空行 而不会像在 Powershell 中一样显示它已输入 python 2 7 10 它没有给我错误消息 但 pytho
  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 在 Python 中使用音频流 RTMP 通过管道和 OpenCV 到 FFmpeg

    我正在尝试使用音频流式传输 FFmpeg 我将在下面展示我的代码 导入模块 import subprocess as sp 创建变量 rtmpUrl rtmp a rtmp youtube com live2 key camera path
  • 更改desktop.ini不会在Windows中自动更新文件夹图标

    我使用此批处理脚本将所有文件夹和子文件夹的图标更改为位于文件夹中的 ico 文件 但是 资源管理器中的文件夹图标不会改变除非我手动重命名desktop ini将资源管理器中的文件更改为其他内容 然后返回desktop ini或者例如将字母更
  • python+win32:检测窗口拖动

    有没有办法检测何时使用 python pywin32 在窗口中拖动不属于我的应用程序的窗口 我想对其进行设置 以便当我拖动标题与桌面边缘附近的图案匹配的窗口时 当松开鼠标时它会捕捉到边缘 我可以编写代码 以便在释放鼠标时将所有具有该标题的窗
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 由于图形处理单元配置,不支持 Windows Phone 模拟器(Mac 上的 Windows 7)

    启动 Windows Phone 模拟器时出现错误 不支持 Windows Phone 模拟器 因为您的计算机没有所需的图形处理单元配置 如果没有图形处理单元 XNA 框架页面将无法运行 您想继续启动模拟器吗 当我尝试访问网页 任何网页 时
  • 将向量 转换为大小为 (n x 3) 的 Mat,反之亦然

    我有 Point3d 向量 向量形式的点云 如果我使用 OpenCV 提供的转换 比如 cv Mat tmpMat cv Mat pts Here pts is vector
  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git

随机推荐