让Nvidia显卡的CUDA与OpenCV一起工作
(2023-02-02 02:15:49)
标签:
gpuopencv |
分类: 电脑 |
Install OpenCV GPU with CUDA for Windows 10
这里的OpenCV其实包含了两种语言:C++和Python,因为这是两个最流行并且高效的语言。
平台的是Windows,虽然我这里是11.
OpenCV版本0.4.7
CUDA版本11.8
cuDNN版本8.7.0
其实现在(2023年2月)最新的CUDA是12,但是cuDNN最高只能支持到11.x。又不想浪费时间做各种无畏的尝试,装了12拆掉了,换11.8吧。
opencv源代码很容易下载,contrib的附加模块源代码也很容易下载。
CUDA很好下载,cuDNN需要注册开发会员,填一些问卷,也很方便。但其实cuDNN的文件整个目录可以直接http访问也没有加密所以。。。挺傻的。
需要python3,研究下来直接装了anaconda,比较方便。虽然虚拟环境也没啥用。
还要Cmake来生成编译文件,也可以用来编译,但是搬出Visual Studio 17
2022,用cmake生成的sln项目文件进去直接编译,多开心。
前提是cmake的配置都要没问题。于是坑就来了。
最大的坑一如既往:线路/网络问题。在cmake配置的时候,居然也会在后台下载一些东西,并且很多都是默认下不来的。只能硬着头皮,看着出错信息,自己另外下载下来,然后放到目标目录或者缓存目录。很傻的办法,但是可以。
其实Opencv的源代码最正宗的方式是用git,但是这个速度实在感人,直接GH打包要快太多。
还有的大坑,就是CUDA和cuDNN版本更新后的一些行为的改变。cuDNN要用到zlib,但这个操作起来不难,而且也只是在最后运行程序的时候才会提醒你,所以不展开。
比较坑爹的是cmake配置的时候,各个问题解决了,CUDA从了,唯独cuDNN不干,说
Could NOT find CUDNN (missing: CUDNN_LIBRARY
CUDNN_INCLUDE_DIR)
Nvidia官方说明上,其实是说在VS的sln文件中进行设置,但实际情况cmake这一关根本过不了。最后解决办法是自己琢磨出来的:gui的cmake配置中,打开高级选项,会发现CUDNN_LIBRARY和CUDNN_INCLUDE_DIR就在向你召唤:直接说没找到,只要把路径填写进去就好了(系统PATH填写了,重启了,还是不认的)。这样就好了。
所以用GUI有点指导意义,高手全背出来的话可以自己打命令行。
一旦config完成,generate之后久舒舒服服地看到sln文件出现了。这个时候你又可以选择:VS打开编译,还是打一串命令进行编译。
我的5900X编译了28分钟,还可以。安装一下8秒钟。
===
最后打开python,import cv2,from cv2 import
cuda以后运行cuda.printCudaDeviceInfo(0)方法,就可以看到显卡信息,就表示成功了。
测试有点意思。静态图片使用GPU居然比CPU还慢,但是如果是视频处理,可以明显看到GPU要快太多。
接下来的新世界,就在你的手里了。