在OpenCV中使用GPU加速ORB算法
写在前面
这个是在做项目的时候碰到的问题,在网上找了好久,都没有相关的示例代码,虽然这个代码并不难,但对于我这种小菜鸡来说独立写出来还是有难度。在我多方参考之下,最终磕磕碰碰还是把这个东西写出来了,因此发出来供大家参考参考,也是记录一下。
但其实ORB检测算法本身就是CPU算法,GPU加速效果并不明显,并且频繁的上下载可能会导致GPU处理速度并不如CPU的情况。大家根据情况选择。
准备工作
准备支持GPU的opencv环境
需要使用GPU加速,则需要准备智齿GPU的opencv环境,如何准备环境网上又很多方法,大家跟着准备即可。最标准的环境配置方法(也是官方推荐的方法)是使用Cmake和vs编译源码,但是我自己使用cmake尝试了好几遍,都没有成功,可能是我vs版本的问题。因此我这里推荐一个不用vs编译的方法,我也是使用这个方法成功安装的支持GPU的opencv环境,具体可以参考这篇博客。
关于 win11 下 opencv-python GPU 安装构建 并 读取rtsp视频流(CUDA 12.0.1)_python安装cuda版opencv-优快云博客
测试支持GPU的opencv环境
运行以下代码,得到支持的GPU数量。
import cv2
import os
os.add_dll_directory(r'D:\opencv\opencv_contrib4.7.0\install\x64\vc17\bin')
os.add_dll_directory(r'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin')
print(cv2.cuda.getCudaEnabledDeviceCount())
print(f'OpenCV: {
cv2.__version__