win10从零搭建opencv-gpu和anaconda-python环境的经验分享

简介

普通opencv的videocapture读取视频的操作太慢了,并且占用大量cpu资源,在写推断脚本时需要使用cuda及对应算子进行加速,于是就有了构建gpu版本opencv的需求,同时因为主要语言为python,需要将opencv的gpu相关接口安装进python里。由于网上大多数都是在linux下进行相关的构建,win下几乎没有,故在此记录以帮助后来人。

准备和步骤

硬性要求:
一款支持cuda的英伟达显卡,本次实验环境为RTX3060。
自备代理工具,免得cmake构建时由于网络问题不能下载一些需要的东西。
能卸载就把自带的python卸载掉,不卸载也行。
原有的opencv的python包请你卸载掉。
win10 64位系统。

要下载的内容:
1.Anaconda的安装包,官网下载最新即可。
2.opencv和opencv-contrib的源码,需在tags即版本这里选择一致的版本,然后点击绿色按钮下载整个压缩包,这里我选择了4.5.2。
在这里插入图片描述
在这里插入图片描述
3.cmake的安装包下载地址,选择Windows x64 Installer下的cmake-3.23.2-windows-x86_64.msi即可。
4.visual studio 2017/2019/2022的安装包,这里推荐19和22,17根据警告迟早要停止支持,另外下载老版本的visual studio时需要登录微软账户,请自备。
5.cuda安装包和cudnn工具集,这个就不在这里详谈了,自行搜索,需要注意的是cudnn的版本要对应上cuda,我装的是11.6。

步骤:
1.安装anaconda,这里要注意在安装过程中勾选上add path to variable,就是添加到环境变量,可以在命令行直接输入python调起相应环境(我这里是python3.9.12),此外需注意自己有没有安装别的版本的python环境,这点在后面cmake中很重要。
打开anaconda,搜索libprotobuf这个包。
在这里插入图片描述
有的话就把它卸载掉!
有的话就把它卸载掉!
有的话就把它卸载掉!

因为cmake默认会生成一个protobuf和这个是冲突的,后面在vs构建会报LNK1104,C1189等各种错误!
在这里插入图片描述

2.解压opencv和opecv-contrib,将其放在同一目录下,并新建文件夹build作为cmake构建目录,这样做的好处是清楚。
在这里插入图片描述
3.安装cmake,同样记得勾选添加环境变量,装完之后记得在命令行里打一下cmake看看有无识别,有识别在安装成功。
在这里插入图片描述

4.安装visual studio,选模块的时候只要选上C++模块即可,其他不用。
在这里插入图片描述
5.安装cuda,拷贝cudnn里的东西到对应目录(对目录不清楚可看我以前配置cudnn的文章)下,之所以把这部分放在vs后面,是因为在安装cuda的时候会将Nsight系列组件装进vs里进行配置。

6.打开cmake-gui,就是装完在你桌面上的那个图标,选好你要构建的目录(即你要在哪里构建)和源码目录(即opencv)。
在这里插入图片描述
然后点击一下configure,耐心等待它把所有的东西下载完,网不好报错了请看硬性要求。
在这里插入图片描述
第一次configure之后会爆出一大堆红色字段,是让你配置的,我们先来搜索python:
在这里插入图片描述
勾选上opencv_python3_version选项,以及查看下面的python3路径。
在这里插入图片描述
这里是重点,如果是一台新电脑没装过python的,会自动配置为anaconda的默认python路径,是对的,如果你装了别的python,你要么手动配置,要么用pip升级一下numpy(它会锁定到numpy所在的python环境)。另外如果你anaconda创建了多个环境,也请你仔细看下是不是装到你要的环境里了。

然后搜索world,勾上opencv_world。
在这里插入图片描述
搜索extra,配置目录为opencv_contrib所在的目录。
在这里插入图片描述
搜索conf,把debug和release改为只有release。
在这里插入图片描述
搜索math,全勾上。
在这里插入图片描述
搜索cuda,能勾的都按图勾上,这里勾完之后点击一下configure,才会出现某些选项比如cuda_arch_bin这个必须配置的。
在这里插入图片描述
cuda_arch_bin一开始里面有很多版本号,分别对应不同的显卡,我的3060对应的就是8.0,对应的可上版本对应查看(直接页面上ctrl+f搜索即可),我这里也有一块截出来的表:
在这里插入图片描述
最后再点击一次configure,点击一次generate生成文件,cmake部分就到此为止了。

7.打开生成的opencv.sln。在这里插入图片描述
第一次打开VS可能让你登录账户啥的,直接跳过即可。然后不用等整个项目加载完,直接右击INSTALL选择生成即可。
在这里插入图片描述
如果项目没有报错只是警告的话,在经过1-2小时漫长的等待之后,恭喜你成功,如下所示:
在这里插入图片描述
8.验证。

##打开命令行输入python调起环境后输入以下代码验证
import cv2
from cv2 import cuda
cuda.printCudaDeviceInfo(0)

一切没问题的话就会把你显卡的信息打印出来啦,说明你成功了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43945848/article/details/125177533