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 路径。

参考资料

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,编译OpenCV DNN C++需要进行以下步骤: 1. 首先,确保已经准备好对应版本的OpenCVopencv_contrib。可以从https://github.com/opencv/opencv/releases和https://github.com/opencv/opencv_contrib/tags下载所需版本。 2. 由于网络问题,需要在使用cmake之前,在一些扩展包的链接之前添加代理链接https://ghproxy.com/,以便在国内的网络环境中顺利安装。 3. 复制opencv_contrib-4.7.0/modules/cudev文件夹中的内容到opencv-4.7.0/modules文件夹中。 4. 打开终端,进入OpenCV源代码目录,并执行以下cmake命令: ```shell cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=ON -D WITH_CUDA=ON -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON \ -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_ARCH_BIN=5.2 -D WITH_CUBLAS=1 \ -D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules \ -D BUILD_opencv_java=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF \ -D CMAKE_INSTALL_PREFIX=/path/to/installation/directory .. ``` 请将上述命令中的`/path/to/opencv_contrib/modules`替换为opencv_contrib模块的路径,将`/path/to/installation/directory`替换为您希望安装OpenCV的目录。 5. 执行make命令进行编译。 6. 执行make install命令进行安装。 这样,您就可以成功编译OpenCV DNN C++了。 #### 引用[.reference_title] - *1* *2* [Opencv DNN C++ CPU 平台编译配置过程](https://blog.csdn.net/P_LarT/article/details/128882415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [OpenCV 4.4带DNN编译](https://blog.csdn.net/weixin_40592935/article/details/108083887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值