opencv-python使用GPU资源--虚拟环境安装与编译opencv源码

准备工作

平台与软件

  • Windows10系统
  • Visual Studio 2019:Visual Studio Community 2019
  • Cmake:cmake-3.20.0-rc3-windows-x86_64.msi
  • OpenCV 4.51:opencv-4.5.1.tar.gz
  • OpenCV_contrib 4.5.1:opencv_contrib-4.5.1.tar.gz

NVIDIA驱动、CUDA和cuDnn

选择适当的驱动和CUDA版本以及对应版本的cudnn,安装win10环境。

NVIDIA微架构、CUDA以及显卡型号对应关系

安装下载VS 2019、cmake和opencv及扩展模块源码

VS 2019下载安装

下载链接

cmake 下载安装

下载链接

opencv和opencv_contrib下载

opencv下载链接
opencv_contrib

百度云下载
提取码:lujx

注:点击左上角的Tag,选择4.5.4版本,opencv和opencv_contrib选择同样的版本

解压文件,准备就绪

创建opencv_cuda文件夹,将opencvopencv_contrib解压到此文件夹中,并在opencv同级目录创建build文件夹。至此准备工作完成。
目录结构大致如下:

|-opencv_cuda
	|--build
	|--opencv_contrib_4.5.4
	|--opencv_4.5.4
		 |---.cache
		 |---其他原有的解压的子文件
	

为避免在首次编译过程中因文件下载失败导致编译不成功,需要将.cache文件夹复制到解压后的opencv源码文件夹中

编译OpenCV

CMake 编译

  1. 打开cmake-gui软件,分别将where is the source codewhere to build the binaries添加为opencv源码文件夹build文件夹
  2. 第一次点击 configure, 选择vs 2019x64架构,点击finish,开始第一次编译
  3. 编译过程需要下载各种依赖,大概率会因为网络问题会卡住,直接复制.cache文件夹,可省去此烦恼
  4. (此步选做) 创建虚拟环境,建议使用anaconda,并在虚拟环境中安装numpy(编译时需要),执行此步骤是为了将CUDA版本的opencv安装到虚拟环境中,只安装到宿主机环境不需要执行此步骤
  5. (此步骤选做,但执行此步骤的前提是必须执行上一个步骤) 更换一下几个变量,分别将路径指向虚拟环境的对应位置 : PYTHON3_EXECUTABLEPYTHON3_INCLUDE_DIRPYTHON3_LIBRARYPYTHON3_NUMPY_INCLUDE_DIRSPYTHON3_PACKAGES_PATH
  6. 编译完成后,在Search框内输入CUDAfast,勾选三个配置 : WITH_CUDA OPENCV_DNN_CUDAENABLE_FAST_MATH
  7. Search框搜world,将build_opencv_world打勾,将所有opencv的库都编译在一起不需要自己一一添加每个小模块。
  8. Search框搜BUILD,勾选BUILD_opencv_python3
  9. search框搜MODULES,在OPENCV_EXTRA_MODULES_RATH一项,添加opencv_contrib4.5.1中的modules目录
  10. search框搜NON,把OPENCV_ENABLE_NONFREE 打勾
  11. 第二次点击configure,等待下方日志显示configure done
  12. 搜索框输入cuda,勾选CUDA_FAST_MATH CUDA_ARCH_BIN中将显卡的算力内容改成自己显卡的算力,对应算力与显卡型号如第一章图片所示,如,显卡型号为 GTX 1050所对应的算力为6.1,则删除其他的算力版本,仅保留6.1即可
  13. 再次点击configure,这次的Configuring done终于OK,然后点击Generate,稍等片刻出现Generating done!
  14. 点击Open Project,它会启动你的Visual Studio。

VS 编译

  1. VS2019打开刚刚编译工程后,会反应一段时间,一定要等待左下角显示的项全部加载完毕才可以继续操作

  2. 选择Release ``x64,接着找到CmakeTargets下的ALL_BUILD,右键→“生成”,然后开始漫长的等待……(笔记本 i7-9750H编译约65分钟,仅供参考)

  3. 解决方案资源管理器—>CMakeTargets—>INSTALL—>生成”然后又是等,好在这次时间很短。此时opencv_cuda\build\lib\python3\Release文件夹下可以看到cv2.cp36-win_amd64.pyd文件(不同的python版本,名称会略有差异)

  4. 同时,在虚拟环境或者宿主机环境中,可以在路径Lib\site-packages下看到cv2文件夹

验证opencv环境

使用命令行进入python环境,执行一下代码即可验证:

c:\users\administrator> python
>>> import cv2
>>> cv2.cuda.getCudaEnabledDeviceCount()
1 # 得到GPU设备数量,即表示opencv的GPU版本已经安装成功
### 回答1: 使用PythonOpenCV进行GPU加速可以显著提高图像处理的速度。以下是一些实现这一目标的步骤: 1. 首先,确保您的计算机系统具有支持GPU的硬件和安装了相应的GPU驱动程序。 2. 安装OpenCVCUDACUDA是一种用于在GPU上进行计算的平台和编程模型),以及它们的Python绑定。您可以通过以下命令在终端中使用pip安装它们: ``` pip install opencv-python opencv-python-headless opencv-contrib-python opencv-contrib-python-headless pip install pycuda ``` 3. 接下来,使用以下代码在Python中设置CUDA环境: ``` import pycuda.driver as cuda import pycuda.autoinit ``` 4. 然后,使用以下代码在Python中启用OpenCVGPU模块: ``` import cv2 cv2.cuda.setDevice(0) ``` 这将启用第一个可用的GPU设备。 5. 最后,使用以下代码在Python中加载图像并应用GPU加速的OpenCV函数: ``` img = cv2.imread("image.png", cv2.IMREAD_COLOR) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray_gpu = cv2.cuda_GpuMat() gray_gpu.upload(gray) blurred_gpu = cv2.cuda_GpuMat() cv2.cuda.blur(gray_gpu, (5,5), blurred_gpu) blurred = blurred_gpu.download() ``` 这将加载图像,将其转换为灰度图像,并将其上传到GPU中。然后,使用cv2.cuda.blur()函数对图像进行模糊处理,并将结果下载回CPU中。 这是一个简单的例子,您可以根据需要使用其他OpenCV GPU函数对图像进行处理。请注意,使用GPU加速会占用大量的计算资源,因此对于较大的图像和复杂的处理操作,可能需要更多的GPU内存和计算能力。 ### 回答2: Python OpenCV是一种专门用于计算机视觉领域的开源库,它能够帮助用户完成包括图像处理、医学成像、人脸识别、目标检测、机器视觉等多种任务。另一方面,GPU加速可以通过使用支持CUDA或OpenCL的图形处理器来提高计算性能,减少计算时间。将Python OpenCVGPU加速相结合,能够极大地提高计算速度和效率。 Python OpenCV可以实现基本的图像处理,但在处理大型图像或视频数据时需要较长的计算时间。这时候,使用GPU加速可以显著地提高处理速度。为了加速Python OpenCV的计算,需要使用具有GPU支持的Python绑定(如opencv-python),并在安装安装CUDA支持或OpenCL支持。在安装完成后,可以使用如下代码启用GPU加速: # 导入OpenCV库 import cv2 # 启用OpenCV GPU加速 cv2.ocl.setUseOpenCL(True) # 打开OpenCV使用GPU加速 cv2.useOptimized(True) 在启用后,可以使用OpenCV中的GPU加速代码来完成图像处理任务,例如使用cv2.cuda模块中的函数。 虽然使用GPU加速能够大大提高Python OpenCV的计算速度和效率,但需要注意一些潜在的问题。例如,不同的GPU平台和Python库绑定可能存在不兼容问题。此外,如果数据量较小,则使用GPU加速可能会比CPU加速更慢,因为在传输数据到GPU之前,需要涉及启动GPU等较长时间。因此,在决定是否启用GPU加速之前,需要仔细评估数据量和计算需求。 总之,Python OpenCVGPU加速技术的相结合,可以使图像处理任务变得更加高效和准确,提高计算速度和处理能力,为计算机视觉领域带来更多的发展机会。 ### 回答3: OpenCV是一个流行的开源计算机视觉库,它提供了一些强大的算法和工具,可用于图像和视频处理。在许多应用程序中,OpenCV必须处理具有大量像素的图像或视频,这将需要大量的计算时间。为了提高运行速度,可以使用GPU加速。GPU是一种用于处理图形和图像的高性能设备,具有比传统CPU更高的并行性和吞吐量,因此使用GPU加速可以大大提高图像和视频处理的速度。 Python是一种广泛使用的编程语言,也可以与OpenCV一起使用。为了使用GPU加速OpenCV,可以使用PythonOpenCV GPU模块。该模块提供了一些函数和类,可以使用GPU加速的OpenCV函数。比如,可以使用cv2.cuda函数将OpenCV的函数转换为可以在GPU上运行的函数,还可以使用cv2.cuda_GpuMat类将数据加载到GTU内存中。 当使用PythonOpenCV GPU模块时,几乎所有的OpenCV函数都可以使用GPU加速,这对于需要处理大量图像和视频的应用程序来说是非常有用的。使用GPU加速可以大大减少算法的计算时间,提高处理速度,从而实现更快速和实时的图像和视频处理。 不过,使用GPU加速也有一些限制。首先,需要GPU设备,这对于一些低端设备来说可能是不可行的。另外,GPU加速可能会导致内存和存储器使用量增加,因此需要谨慎使用。除此之外,GPU加速也要求一定的编程技能和计算机体系结构的知识。 总之,PythonOpenCV GPU模块为图像和视频处理提供了强大的工具,使用GPU加速可以提高处理速度,提高应用程序的性能。不过,在使用GPU加速之前需要考虑到设备和内存的限制,以及需要了解计算机体系结构的知识。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值