Opencv DNN C++ CPU 平台编译配置过程

在这里插入图片描述

Opencv DNN C++ CPU 平台编译配置过程

以下内容基于 windows 平台,实际上不同平台在基础工具齐全的情况下,编译过程差异并不大。

opencv 随着版本的更新,对于不同算子的支持也会逐步完善,所以尽量使用新的版本。

同时也可以把对应版本的 opencv_contrib 准备好。可以结合需求查看 这一扩展模块 真的是否有需要,我们这里默认不安装。

这里为了在 qt 中使用 gcc 编译的版本,在官方仓库中提供的 windows 版本文件中直接提供了 vs 编译的库文件,但是由于其也提供了源码,所以我们可以重新使用 mingw 编译一份。不同的编译器编译的库一般不能混用。所以这也需要你的电脑上事先准备好 mingw 套件,并配置好环境变量。一般情况下,装好的 qt 软件目录中是有现成的 mingw 套件的。

opencv-4.7.0-windows.exe 为例。这类 exe 文件执行后指定目录可以直接解压出其中包含的 opencv 的文件,包含 buildsources 文件夹。前者是预编译好的文件,后者是源码,我们基于后者重新编译。这一过程需要使用 cmake,可以从官网 下载最新的稳定版本的二进制安装文件。这里直接使用 windows 64位版本。安装好 cmake 后,打开其 gui 版本。

一些重要的配置

由于网络问题,cmake 使用过程中汇报一些错误,所以在使用 cmake 之前,我们先在一些扩展包的 https://raw.github*** 链接之前添加代理链接 https://ghproxy.com/ ,即 https://ghproxy.com/https://raw.github*** 的形式。以便于在国内的网络环境可以顺利安装:

  • opencv-4.7.0/3rdparty/ippicv 中的.cmake 文件
  • opencv-4.7.0/3rdparty/ffmpeg 中的.cmake 文件
  • (如果用了扩展库的话)opencv_contrib-4.7.0/modules/face 中的 CMakeLists.txt 文件
  • (如果用了扩展库的话)opencv_contrib-4.7.0/modules/xfeatures2d 中的 cmake 文件夹中的文件
  • (如果用了扩展库的话)opencv_contrib-4.7.0/modules/wechat_qrcode 中的 CMakeLists.txt 文件
  • (如果用了扩展库的话)opencv_contrib-4.7.0/modules/cudev 复制到 opencv-4.7.0/modules 中

在 build 文件夹中启动 cmake-gui 开始准备生成编译配置,进入后可以勾选上 GroupedAdvanced 来获得更好的展示效果。

  1. 进入后,分别将源码路径和构建路径指向 sources 和我们新建的 build-mingw64 路径。
  2. 点击左下角的 configure,在弹出的对话框中选择 MinGW Makefiles 和 Specify native compilers,分别把 c 和 c++ 编译器路径指向你的 gcc.exeg++.exe,确保这些 exe 所在的文件夹加到了环境变量里,不然之后会报错,提示另一个文件找不到。finish 后程序会自动生成相关的编译选项。
  3. 在默认选项的基础上,结合网上的一些信息,建议勾选:
    1. BUILD_OPENCV_WORLD。开启后会包含 opencv_world 模块,将各个模块编译成一个 opencv_worldxxx.lib 文件,而不是十几个 lib 库文件。方便之后的部署和使用。
    2. (如果用了扩展库的话)OPENCV_EXTRA_MODULES_PATH:单击这一行后方空白处后,点击后面的三个点,选择 opencv_contrib 文件夹中的 modules 文件夹。
    3. CMAKE_BUILD_TYPE:RELEASE
    4. OPENCV_ENABLE_NONFREE:ON(开启一些有版权的算法的支持)
    5. OPENCV_GENERATE_PKGCONFIG:ON(linux 上或许会有用)
    6. 其他一些涉及到 GPU 环境才需要考虑的选项:
      1. WITH_CUDA:ON
      2. WITH_CUDNN:ON
      3. OPENCV_DNN_CUDA:ON
      4. ENABLE_FAST_MATH:ON
      5. CUDA_FAST_MATH:ON
      6. CUDA_ARCH_BIN:7.5 (因为我的设备是 2080Ti,所以对应的是 7.5,如果没有特殊需要,这里直接指定你的设备对应的数值即可,不然会严重拖慢编译速度)
      7. WITH_CUBLAS:ON
  4. 勾选好后,重新点击 Configure,确保没有红色信息。这些设置好后,点击 Generate 生成 Makefile 文件。
  5. 之后到 mingw-version 文件夹中启动终端,使用电脑上的 make 程序开始编译:
    1. (可选)make clean。每次重新编译时都应该先执行这一句,来清除之前编译的残留
    2. make -j8 这里的 8 是你电脑的核心数量,可以按照实际情况调整。
    3. 无错结束后,执行最后一步:make install
  6. 一切无错后便可以在 Qt 中使用 OpenCV 了。只需要在 pro 配置中的配置好路径即可。可以直接在 qt 项目中,在左栏项目名字上右键中使用“添加库”功能添加外部的库。可以非常方便的添加库文件和 include 路径。

参考资料

猜你喜欢

转载自blog.csdn.net/P_LarT/article/details/128882415