1 准备工具

点击上面链接跳转,我使用的是CMake3.24,CUDA11.1,CUDNN8.0.5,已上传至百度网盘。

链接:https://pan.baidu.com/s/1NqyHujPUkk8j3LdqH22sGw

提取码:u2it

2. 编译流程

2.1 CUDA

安装CUDA和对应的CUDNN,并配置环境变量。

网址:https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-853/support-matrix/index.html

40系显卡需要cuda11.8以上,不然会编译报错:找不到opencv_world460.lib!

我的显卡4070,cuda11.8,cudnn8.6.0。

2.2 CMake

2.2.1 解压OpenCV和OpenCV_contrib,打开CMake-gui设置source和build(新建)路径,点击Configure。

第一次Configure出现报错,PPICV和FFMPEG下载失败

以PPICV为例,在目标路径下找到CMakeDownloadLog.txt,其中关于IPPICV的信息如下

打开https://ghproxy.com/,输入网址,下载ippicv_2020_win_intel64_20191018_general.zip

找到放置zip的路径D:\tool\opencv-4.6.0\.cache\ippicv,替换其中的zip

2.2.2 再次Configure,在新生成的选项中,勾选/取消勾选相关内容:

1. 勾选WITH_TBB

2. 勾选CUDA相关

3. 取消选择 java 的编译选项(个人不需要)

4. 勾选nonfree

5. 取消勾选TEST,加速编译

6. 勾选 BUILD_opencv_world 最终只生成一个动态链接库方便使用

7. 在 OPENCV_EXTRA_MODULES_PATH 中填入 OpenCV_contrib 解压文件夹 modules 的路径

8. 取消选择 OPENCV_GENERATE_SETUPVARS

2.2.3 再次Configure,xfeatures和face报错,因为用不到,我取消了勾选。选择显卡算力,10系卡为6.1,20系卡为7.5,30系卡为8.6,40系卡为8.9。

2.2.4 再次Configure,确保没有红色报错,然后点Generate。

2.3 VS2019

打开生成的 OpenCV.sln 文件,找到项目 INSTALL 右击生成。大概1个半小时后

最终会在当前 build 目录下生成一个 install 目录,这就是我们需要的可执行文件和库,最后添加到环境变量中测试效果。

3 使用

3.1 属性页设置

3.2 拷贝opencv_world460.dll到release下

3.3 开启cuda加速

#include <opencv2/dnn.hpp>
using namespace dnn;
...
this->net.setPreferableBackend(DNN_BACKEND_CUDA);
this->net.setPreferableTarget(DNN_TARGET_CUDA);

yolov5推理时间减少一半。 

参考:

1. OpenCV cuda 版本编译使用

2. IPPICV: Download failed: 6;“Couldn‘t resolve host name“

VS2019编译Opencv4.6.0GPU版本(支持40系显卡)的更多相关文章

  1. 在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

    1 缘起 原来就了解些libcurl,一直没有机会在项目实际使用libcurl.   恰好最近一个云存储的项目,服务器使用openstack 恰好我负责现在的一个云存储SDK c++版本的开发中. 与 ...

  2. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  3. chromedriver版本支持的Chrome版本

    下载chromedriver,链接:http://chromedriver.storage.googleapis.com/index.html   chromedirver版本 支持的Chrome版本 ...

  4. scons编译mongodb(vs2008版本)遇到的问题总结

    OS:win7 64 boost:1.49 mongodb:2.4.6(推荐64位版本,当然如果你系统是32位的,只能使用32的版本了) IDE:vs2008(2010的同学请跳过吧,因为官网提供的就 ...

  5. Linux操作系统内核编译之NTFS文件系统模块支持案例

    Linux操作系统内核编译之NTFS文件系统模块支持案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内核编译概述 单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引 ...

  6. VS2019编译 当前最新版chromium

    之前编译过webrtc和chromium, 由于长时间没用,被我删除了, 最近在最新版本的google浏览器上遇到了播放器兼容性问题,老版本的google浏览器是没问题,IE, 火狐浏览器也没问题, ...

  7. New!Devexpress WPF各版本支持VS和SQL Server版本对应图

    点击获取DevExpress v19.2.3完整版试用下载 本文主要为大家介绍DevExpress WPF各大版本支持的VS版本和支持的.Net版本图,Devexpress WPF v19.2.3日前 ...

  8. New!Devexpress WinForms各版本支持Visual Studo和SQL Server版本对应图

    点击获取DevExpress v19.2.3最新完整版试用下载 本文主要为大家介绍DevExpress WinForms各大版本支持的VS版本和支持的.Net版本图,Devexpress WinFor ...

  9. vs2019编译opencv

    序 微软家的宇宙第一ide:visual studio已经更新到了2019版,芒果也更新尝鲜了一遍,体验还不错,建议更新尝尝鲜.芒果顺便使用vs2019编译了一遍opencv,编译过程也非常顺利,以下 ...

  10. 记一次在mac上源码编译curl,使其支持NSS的过程

    一.背景 在一次学习https原理的过程中,希望客户端指定特定的cipher suites来抓包分析SSL/TLS的握手过程,就想到了使用curl工具,而不是使用浏览器. 接下来使用man curl找 ...

随机推荐

  1. 力扣844(Java)-比较含退格的字符串(简单)

    题目: 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true .# 代表退格字符. 注意:如果对空文本输入退格字符,文本继续为空. 示例 1: 输入:s = ...

  2. 力扣594(java&python)-最长和谐子序列(简单)

    题目: 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 . 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度. 数组的子序列是一个由数组派生出来 ...

  3. 团队管理|如何提高技术Leader的思考技巧?

    简介: 技术Leader是一个对综合素质要求非常高的岗位,不仅要有解具体技术问题的架构能力,还要具备团队管理的能力,更需要引领方向带领团队/平台穿越迷茫进阶到下一个境界的能力.所以通常来说技术Lead ...

  4. StarRocks X Flink CDC,打造端到端实时链路

    简介: 作为一款全平台极速 MPP 架构,StarRocks 提供了多种性能优化手段与灵活的建模方式,在预聚合.宽表和星型/雪花等多种模型上,都可以获得极致的性能体验.通过 StarRocks 结合 ...

  5. [DOT] Polkadot-js 的官方资源

    官网:https://polkadot.js.org/ 浏览器扩展(即钱包, 等同以太坊的MetaMask):https://polkadot.js.org/extension/ 钱包的作用方便你管理 ...

  6. C++多态与虚拟:Objects 实例化(Objects Instantiation)探究

    一.Objects的创建 依据已有的class CPoint ,我们可以产生一个或多个object(对象),或者说是产生一个instance(实体): CPoint aPoint(7.2); // a ...

  7. 安装conda搭建python环境(保姆级教程)

    参考文档: 安装conda搭建python环境(保姆级教程)

  8. vuepress搭建

    参考文章 中国 NPM 镜像 https://npmmirror.com/ 资料 链接:https://pan.baidu.com/s/1O1WitowUR4iwbrdsG92Gew 提取码:adj4 ...

  9. 零知识证明: Tornado Cash 项目学习

    前言 最近在了解零知识证明方面的内容,这方面的内容确实不好入门也不好掌握,在了解了一些基础的概念以后,决定选择一个应用了零知识证明的项目来进行进一步的学习.最终选择了 Tornado Cash 这个项 ...

  10. Linux(一):Linux操作系统

    Linux(一):Linux操作系统 对于我们编程人员来讲,linux对于我们几乎已经是像windows对于普通用户一样,好像和同行交流说不会linux就像说不会用计算机一样羞耻.这里打算从头开始温故 ...