windows 编译 opencv

编译需要的基础工具
#cmake是配置构建工具,mingw是编译工具

cmake

CMake是一款跨平台的编译管理工具,可以自动生成各种不同编译环境(如Makefile、Visual Studio Solution等),从而实现在不同平台上进行代码编译的目的。CMake提供了一种简单的语法描述(CMakeLists.txt文件)来描述构建过程,并通过生成相应的构建脚本来完成编译构建过程。CMake主要被用于C++的工程管理和构建,但也可以用于其他语言。

cmake下载地址: https://cmake.org/download/

  1. 下载zip版本“cmake-3.xx-win64-x64.zip”
  2. 解压到指定目录并添加bin所在目录到环境变量。
  3. 在终端输入“cmake --help”或 “cmake --version”查看是否配置成功。

mingw

mingw-W64 是一款用于 Windows 操作系统的开源 C/C++ 编译器集合,它完全兼容 GNU 工具集,可以在 Windows 平台上编译出可以在 Windows、Linux 和 macOS 等操作系统上运行的可执行文件。 mingw-W64 可以生成 32 位和 64 位应用程序,同时还支持 Windows API、POSIX API 和 OpenMP。

mingw-W64下载链接:https://sourceforge.net/projects/mingw-w64/files/

  1. 推荐下载 离线版本“x86_64-posix-seh”

  2. 解压到指定目录并将bin目录加入到环境变量

  3. 在终端输入 “gcc --version”。查看是否安装成功。

opencv

下载链接:https://opencv.org/releases/

本次 Windows 环境的安装,因此下载OpenCV-4.6.0 Windows 版。

准备文件

双击下载好的exe文件,程序会生成 opencv 文件夹。
这个 opencv 文件夹就是我们后面的编译源文件。
新建一个文件夹 build_for_vscode ,用于存放我们后面的编译结果。

1. 配置

打开 cmake 的编译配置软件:
我的软件路径是 D:\appdata\cmake\cmake-3.26.0-rc2-windows-x86_64\bin\cmake-gui.exe
下面的步骤不同情况可能先后顺序不一样,但是配置过程一致。

  1. 双击 cmake-gui.exe 开始配置。

  2. 将opencv中的sources文件添加进来
    对于 where is the souce code:选择前面 opencv 原文件下到 sources 位置
    对于 where is build the binaries:选择新建的编译结果保存文件夹

  3. 点击 configure 开始配置
    在弹出的界面中:
    Specify the generator for the project中选择:
    MinGw makefiles
    Specify native compilers
    next

  4. 配置编译器 mingw
    C : D:/appdata/mingw64/bin/gcc.exe
    C++:D:/appdata/mingw64/bin/g++.exe
    点击Finish开始配置

  5. 假设你配置完全OK了,也就是 cmake-gui.exe 下面的配置输出没有任何标红出现。那么 Configuring done (7.2s) 后再点击 generate,出现Generating done (2.8s)。配置就结束了。下一步就是编译。

如果配置存在问题,请看本篇博文最后。

成功界面应该没有任何标红,如图:

2.编译

编译过程简单得多,直接在终端打开上面的配置输出目录:
编译:
mingw32-make

编译加速:
mingw32-make -j16

成功如图:

安装:
mingw32-make install

配置过程的其他问题

出现问题后可以在编译结果 CMakeDownloadLog.txt 中查看详细信息。这里主要记录一些坑。

坑一

最为经典的一个报错:FFMPEG下载失败,这是因为需要访问外网引起的
办法:
翻墙下载离线文件,替换源代码中“opencv/sources/.cache/ffmpeg”下的 0KB 空文件。
用后面三个我自己下载的有内容的文件,替换没有内容的 0KB 空文件。

注意保留文件名替换,替换后如图:

三个文件的下载链接其实就在CMakeDownloadLog.txt 报错信息中,但科学上网才能下载。如果没有条件,这个有一个不用科学上网的分享。
FFMPEG下载失败以及分享:https://www.codenong.com/cs109394452/

附,三个文件科学上网下载地址:
opencv_videoio_ffmpeg_64.dll下载地址:https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg_64.dll

opencv_videoio_ffmpeg.dll下载地址:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg.dll

ffmpeg_version.cmake下载地址:
坑:ffmpeg_version.cmake 不要复制保存,要将整个文件从网页下载重命名(网页右击另存为文件)。
https://raw.githubusercontent.com/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/ffmpeg_version.cmake

坑二:配置(configure)时总是找到anaconda下面的python版本,标红说python版本不合适,最后编译不通过

不管是何种情况,我现在的配置是和anaconda 没有关系的,但配置过程却总是找到ananconda的二进制文件,比如 PYTHON 版本警告。
办法:系统环境变量 PATH 删除一切关于anaconda的环境变量,同时!!!必须重启电脑!坑!

编译过程的其他问题

问题:CMakeFiles\opencv_highgui.dir/objects.a(moc_window_QT.cpp.obj)
办法: https://blog.csdn.net/qq_21555569/article/details/122776588

问题:opencv编译时,想要的环境似乎没有找到
办法:环境变量设置好了以后,一定要重启电脑

问题:编译速度慢
办法:查看电脑CPU数量,在命令mingw32-make加上j16 -------> mingw32-make -j 16

问题:使用-j16后报错不一样
办法:先用命令mingw32-make -j16 快速编译一遍,然后去掉j16再编译一次,就能快速看到详细报错

猜你喜欢

转载自blog.csdn.net/LQ_001/article/details/130569657