当 Mingw 为 C++ 编译 OpenCV 时,我遇到错误?

i am getting error while mingw is compiling opencv for c++?

本文关键字:遇到 错误 OpenCV Mingw C++ 编译      更新时间:2023-10-16

好的,我正在尝试为人类检测程序设置环境..编程语言我将使用C ++,编译器是代码块。 我已经下载了OpenCV 4.1 还下载了CMake 和明格 我还在环境设置中添加了路径。 我在 C:\OpenCV\sources 文件夹中提取了 OpenCV 通过使用 cmake,我在 c:\opencv\build 中配置并生成了构建文件

在此之后,我打开C:\opencv\source\opencv\build这个文件夹,右键单击它并打开PowerShell并输入mingw32-make commnd。

这样 Mingw 就会开始编译 OpenCV 但是在弹出 5% 的错误后...

PS C:opencvsourceopencvbuild> mingw32-make

[ 2%] 构建目标 zlib [ 2%]Building C object 3rdparty/libjpeg-turbo/CMakeFiles/libjpeg-turbo.dir/src/jmemmgr.c.obj C:\opencv\source\opencv\sources\3rdparty\libjpeg-turbo\src\jmemmgr.c: 在函数'realize_virt_arrays'中: C:\opencv\source\opencv\sources\3rdparty\libjpeg-turbo\src\jmemmgr.c:662:11:错误:"SIZE_MAX"未声明(首次在此函数中使用) 如果 (SIZE_MAX - maximum_space CMakeFiles/libjpeg-turbo.dir/src/jmemmgr.c.obj] 错误 1 CMakeFiles\Makefile2:312:目标"3rdparty/libjpeg-turbo/CMakeFiles/libjpeg-turbo.dir/all"的配方失败 mingw32-make[1]: * [3rdparty/libjpeg-turbo/CMakeFiles/libjpeg-turbo.dir/all] 错误 2 生成文件:161:目标"全部"的配方失败 mingw32-make: *** [全部] 错误 2

实际上可以通过 mingw32 编译 opencv 3.4.3(我使用了 5.3.0 作为实例)。请遵循本指南。它有点旧,但也适用于opencv 3.4.3 构建步骤:

  1. 从官方github存储库下载最新的Opencv版本(假设您已将opencv下载到磁盘上某处的"opencv"目录中)
  2. 转到opencv/modules/videoio/src,打开cap_dshow.hpp,粘贴 #define NO_DSHOW_STRSAFE(就在所有其他内容的顶部),保存文件以提交更改
  3. 安装 CMake(我用过 3.5.1)
  4. 打开CMake,点Opencv3.4.3源位置也指向要构建它们的位置(假设实例将是磁盘上的"build"目录sonwhere),按"配置按钮">
  5. 从"Mingw Makefiles"对话框中选择,然后等待 utill 源将被预处理
  6. 所有选项都是红色是正常的,在CMake窗口的右上角选中"分组",现在我们应该检查一些标志:

    在组中 CMAKE:对于选项CMAKE_BUILD_TYPE写入发布(以构建 openCV 的发布版本),您也可以在此处指定构建后将安装的 Opencv 二进制文件的位置

    在组中启用:选中ENABLE_CXX11和取消选中ENABLE_PRECOMPILED_HEADERS

    在组中:取消选中WITH_MSMF

  7. 按"配置"按钮,直到处理完成,现在所有选项都应变为白色

  8. 按"生成"按钮并等待(在您的构建目录中应该创建 Makefile,您可以在此步骤后关闭 CMake)

  9. 让舒尔成为您的系统已知的 mingw 工具链位置(查看系统环境变量 PATH 是否包含 mingw 工具链的路径)

  10. 打开cmd.exe,将目录更改为opencv的构建目录

  11. 让我们构建 opencv (-j[uint] - 选项指定要使用的线程数)

    .../build> mingw32-make -j4

  12. 让我们安装 opencv

    .../build> mingw32-make install