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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解压到sln一级目录项目属性 C/C++ 附加包含目录 填写Libs/x86/opencv_v3.4.0/include路径 属性中链接器,所有选项附加库目录填写Libs/x86/opencv_v3.4.0/lib 附加依赖项: opencv_aruco340.lib;f.lib;opencv_bgsegm340.lib;opencv_bgsegm340d.lib;opencv_bioinspired340.lib;opencv_bioinspired340d.lib;opencv_calib3d340.lib;opencv_calib3d340d.lib;opencv_ccalib340.lib;opencv_ccalib340d.lib;opencv_core340.lib;opencv_core340d.lib;opencv_datasets340.lib;opencv_datasets340d.lib;opencv_dnn340.lib;opencv_dnn340d.lib;opencv_dpm340.lib;opencv_dpm340d.lib;opencv_face340.lib;opencv_face340d.lib;opencv_features2d340.lib;opencv_features2d340d.lib;opencv_flann340.lib;opencv_flann340d.lib;opencv_fuzzy340.lib;opencv_fuzzy340d.lib;opencv_highgui340.lib;opencv_highgui340d.lib;opencv_imgcodecs340.lib;opencv_imgcodecs340d.lib;opencv_imgproc340.lib;opencv_imgproc340d.lib;opencv_img_hash340.lib;opencv_img_hash340d.lib;opencv_line_descriptor340.lib;opencv_line_descriptor340d.lib;opencv_ml340.lib;opencv_ml340d.lib;opencv_objdetect340.lib;opencv_objdetect340d.lib;opencv_optflow340.lib;opencv_optflow340d.lib;opencv_phase_unwrapping340.lib;opencv_phase_unwrapping340d.lib;opencv_photo340.lib;opencv_photo340d.lib;opencv_plot340.lib;opencv_plot340d.lib;opencv_reg340.lib;opencv_reg340d.lib;opencv_rgbd340.lib;opencv_rgbd340d.lib;opencv_saliency340.lib;opencv_saliency340d.lib;opencv_shape340.lib;opencv_shape340d.lib;opencv_stereo340.lib;opencv_stereo340d.lib;opencv_stitching340.lib;opencv_stitching340d.lib;opencv_structured_light340.lib;opencv_structured_light340d.lib;opencv_superres340.lib;opencv_superres340d.lib;opencv_surface_matching340.lib;opencv_surface_matching340d.lib;opencv_text340.lib;opencv_text340d.lib;opencv_tracking340.lib;opencv_tracking340d.lib;opencv_video340.lib;opencv_video340d.lib;opencv_videoio340.lib;opencv_videoio340d.lib;opencv_videostab340.lib;opencv_videostab340d.lib;opencv_xfeatures2d340.lib;opencv_xfeatures2d340d.lib;opencv_ximgproc340.lib;opencv_ximgproc340d.lib;opencv_xobjdetect340.lib;opencv_xobjdetect340d.lib;opencv_xphoto340.lib;opencv_xphoto340d.lib;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值