当前位置: 首页 > news >正文

编译 CUDA加速的 OpenCV-4.8.0 版本

文章目录

  • 前言
  • 一、编译环境
  • 二、前期准备
  • 三、CMake编译
  • 四、VS编译OpenCV.sln
  • 五、问题


前言

由于项目需要用上CUDA加速的OpenCV,编译时也踩了不少坑,所以这里记录一下。


一、编译环境

我的编译环境是:
Win10 + RTX4050 + CUDA-12.0 + CUDNN 8.9.6.50 + VS2019 + CMake-3.28.0 + OpenCV-4.8.0 + OpenCV_Contrib-4.8.0
额外注意的是:CUDA_ARCH_BIN=7.5;8.6;8.9;9.0

二、前期准备

  1. 如果你的编译环境跟我一模一样的话,你可以直接下载百度网盘,提取码:1215,里面的include/lib/bin文件夹直接拷贝出去用就可以了。
  2. 如果有不同之处,一定要重新编译,不然就会报错:
    error: (-216: No CUDA support) OpenCV was not build to work with the selected device.
  3. 上面的链接下载下来后,里面的source包含了 OpenCV-4.8.0 + OpenCV_Contrib-4.8.0的zip文件夹,就不用直接去官网下载了。
  4. 如果重新编译,记得把 source/.cache文件夹,放到解压后的 OpenCV 4.8.0文件夹下。
    在这里插入图片描述

三、CMake编译

接下来,就照着我的截图进行选择。

  1. 先按下图选择,点击Configure。
    在这里插入图片描述

  2. 完成之后,会一片红
    在这里插入图片描述

  3. 去除Python相关;
    在这里插入图片描述

  4. 去除Java相关;
    在这里插入图片描述

  5. 去除JS相关;
    在这里插入图片描述

  6. 去除tests相关;
    在这里插入图片描述

  7. 勾选CUDA相关
    在这里插入图片描述

  8. 将 OpenCV-Contrib 加入到项目中
    在这里插入图片描述

  9. 勾选 build_opencv_world
    在这里插入图片描述

  10. 去除 OpenCV_ENABLE_NONFREE
    在这里插入图片描述

  11. 勾选 ENABLE_FAST_MATH
    在这里插入图片描述

  12. 再次点击Configure

  13. 完成之后,选择CUDA_ARCH_BIN并勾选 CUDA_FAST_MATH
    在这里插入图片描述

  14. 再次点击Configure;

  15. 如果这次完成之后,没有红色,那么就直接Generate,done就结束了。


四、VS编译OpenCV.sln

  1. 打开 build/OpenCV.sln
  2. 选择 Release/x64,右键 ALL_BUILD - >生成即可。
    在这里插入图片描述
  3. 如果全部成功,那么再右键INSTALL -> 生成即可。这个会帮你整理生成的include/lib/bin文件夹
    在这里插入图片描述

五、问题

  1. .cache文件夹一定要提前放到 OpenCV 4.8.0 文件夹下,不然你会在CMake的时候收获一堆Warning,就是因为下载这堆东西失败。
  2. CuDNN下载之后,记得放到CUDA文件夹下,然后添加相应的环境变量。
  3. 我在使用上面的版本时,发现,对于读取同一个model进行推理,Release/cuda下GPU的利用率是30%,但是Debug/cuda的利用率只有5%左右。但是你如果说GPU没用上,其速度又比单纯使用CPU快一倍。目前还没弄懂。
  4. 另外,我在debug/cpu下的内存大概是200m左右,但是debug/gpu跑到了5.7G。我也没弄懂这个。
http://www.lryc.cn/news/239719.html

相关文章:

  • 设计模式篇---外观模式
  • leetcode:520. 检测大写字母
  • 5-6求1-20的阶乘和
  • web需求记录
  • [网鼎杯 2018]Fakebook
  • 微信小程序蓝牙连接 uniApp蓝牙连接设备
  • 启动Dubbo项目注册Zookeeper时提示zookeeper not connected异常原理解析
  • 我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)
  • MATLAB算法实战应用案例精讲-【图像处理】图像缩放
  • Doris的PROPERTIES与ENGINE(九)
  • 华为云数据库 RDS 下载全量备份文件 wget
  • C#使用whisper.net实现语音识别(语音转文本)
  • 从零开始学习typescript——运算符(算术运算符、赋值运算符、比较运算符)
  • likeshop单商户商城系统 任意文件上传漏洞复现
  • CentOS 7 使用pugixml 库
  • 深度学习 loss 是nan的可能原因
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • 第二十章:多线程
  • CentOS 7启动时报“Started Crash recovery kernel arming.....shutdown....”问题处理过程
  • Android 13 - Media框架(14)- OpenMax(二)
  • 【Python大数据笔记_day11_Hadoop进阶之MR和YARNZooKeeper】
  • 飞桨——总结PPOCRLabel中遇到的坑
  • LeetCode(30)长度最小的子数组【滑动窗口】【中等】
  • Niushop 开源商城 v5.1.7:支持PC、手机、小程序和APP多端电商的源码
  • Navmesh 寻路
  • YOLOv5 分类模型 数据集加载 3
  • 『亚马逊云科技产品测评』活动征文|AWS 存储产品类别及其适用场景详细说明
  • Mac | Vmware Fusion | 分辨率自动还原问题解决
  • SQL知多少?这篇文章让你从小白到入门
  • centos7安装MySQL—以MySQL5.7.30为例