|
【opencv】【GPU】windows10下opencv4.8.0-cudaPython版本源码编译教程提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论文章目录【opencv】【GPU】windows10下opencv4.8.0-cudaPython版本源码编译教程前言准备工具anaconda/cuda/cudnnanaconda创建环境(选做)安装原生python(选做)cmakeopencv4.8.0opencv_contribCMake编译VS2019编译可能出现的问题cmake编译过程中可能出现的问题VS2019编译过程中可能出现的问题测试使用GPU总结前言OpenCV是一个开源的计算机视觉库,包含了核心模块和扩展模块,提供了基础的图像处理和计算机视觉算法,以及一些机器学习工具。而OpenCVContrib是OpenCV社区贡献的一组扩展模块之一,包含了一些较为新颖和实用的算法和工具函数,提供了一些高级的图像处理和计算机视觉算法。这些功能和算法可能不适合所有用户或者还处于实验性阶段。OpenCVContrib模块中的代码由社区贡献者开发和维护,它们提供了一些在OpenCV核心库中尚未包含的新特性和实验性功能。准备工具cmake、vs2019、opencv4.8.0、opencv_contrib-4.8.0、anaconda、cuda、cudnnanaconda/cuda/cudnn安装cuda、cudnn可以参考此前博主的【深度学习windows10环境配置详细教程】,因为对于新手来说,需要注意的细节比较多,这里不浪费篇幅重复讲述了。anaconda创建环境(选做)为了将CUDA版本的opencv安装到虚拟环境中,安装到默认环境(base)不需要执行此步骤。#搭建opencv环境condacreate-nopencv_onnx_gpupython=3.10.9-y#激活环境activateopencv_onnx_gpu1234虚拟环境中需要安装numpy,后续的编译过程中需要。pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplenumpy1安装原生python(选做)在使用CMake为Anaconda新建的虚拟环境安装OpenCV时,需要在主机上安装一个与虚拟环境中的Python版本一致的原生环境,这是由于CMake需要在构建过程中使用与虚拟环境中的Python版本一致的Python解释器来生成适用于该版本的Python绑定。博主在anaconda创建的虚拟环境python为3.10,因此需要安装了python3.10原生版本,否则即使通过编译但始终无法使用opencv-python。原生python官网下载地址,选择Windows版本。这里通过激活虚拟环境查看安装对应的版本,博主不确定这种微小版本的差异会不会影响后续编译测试,所以最好都保持一致。勾选加入系统环境后直接安装。配置环境变量,这里可能出现cmd使用的python版本还是使用anaconda的base环境的情况,这是因为在环境变量Path中anaconda的顺序排在原生Python的前面,调整原生python的路径在anaconda的base之前即可。cmakeCMake官方下载地址,下载cmake-3.27.7-windows-x86_64.msi。添加到环境和安装路径博主根据自身情况作出了修改,其他都是默认安装。出现以下界面安装成功。opencv4.8.0Opencv官方下载地址,下载OpenCV–4.8.0Sources,下载解压opencv-4.8.0.zip。opencv_contribopencv_contrib官方下载地址,选择opencv对应的contrib版本,例如opencv4.8.0对应就是opencv_contrib-4.8.0.zip。下载后直接解压。CMake编译打开CMake,whereisthesourcecode是Opencvsources(博主是opencv-4.8.0)的文件夹位置,wheretobuildthebinaries是编译opencv保存的文件夹位置(自定义),在左下角第一次点击Configure。选择对应vs的版本(博主是vs2019),系统选择x64,最后点右下角Finish,显示Configuringdone。安装到默认环境(base)不需要执行此步骤,该步骤步骤的目的是安装cuda版本opencv到用户自定义的虚拟环境中,分别将路径指向自定义虚拟环境的对应位置YTHON3_EXECUTABLE、PYTHON3_INCLUDE_DIR、PYTHON3_LIBRARY、PYTHON3_NUMPY_INCLUDE_DIRS(需要安装numpy)、PYTHON3_PACKAGES_PATH。4.在Search搜索框搜索带cuda的关键字,全部勾选。Search搜索框搜索OPENCV_EXTRA_MODULES_PATH,添加解压的opencv_contrib中的modules的路径,再搜索并勾选OPENCV_ENABLE_NONFREE选项。build_opencv_world可以将所有opencv的库都打包编译在一起,但是具体的工程又不建议这种模式。对于java、js、tests相关选项的选择,用Search搜索框分别搜索“java”,“js”,“tests”,根据需要选中和取消相关选项,默认都是选中,博主都取消了,必须勾选BUILD_opencv_python3,决定了能否在python中使用GPU加速,第二次点击Configure。显示Configuringdone后,将CUDA_ARCH_BIN显卡算力内容改成自己显卡的算力。官网查看显卡算力地址,删除小于自己显卡算力的部分,再搜索并勾选ENABLE_FAST_MATH选项,第三次点击Configure。显示Configuringdone后,点击generate,显示generatingdone,成功完成cmake编译,在输出的opencv保存文件夹位置中存在就生成了OpenCV.sln文件。cmake编译过程是会从githup上下载数据,但是一般都会出现下载失败的情况,这里建议读者先跳到【可能出现的问题】这一小节,来确认是不是自己也出现了下载失败的情况。VS2019编译确保在解决方案的bindings这个目录下有opencv_python3,否则即使编译成功仍然不能使用CUDA加速。使用VS2019(以管理员方式运行)打开刚刚编译工程OpenCV.sln,在release|x64模式下,在解决方案资源管理器—>CMakeTargets—>右键点击ALL_BUILD–>生成。同样在release|x64模式下,在解决方案资源管理器—>CMakeTargets—>右键点击INSTALL–>生成。没有任何报错信息就是编译完成,在XXX\lib\python3\Release文件夹下可以看到cv2.cpxxx-win_amd64.pyd文件。XXX是编译opencv保存的文件夹位置(博主是opencv-4.8.0-vs2019-64),cpxx是python版本(博主是cp310)同时,在虚拟环境中,可以在路径Lib\site-packages下看到cv2文件夹进入cv2目录打开config.py可以看到虚拟环境opencv_onnx_gpu依赖于cmake编译的opencv(wheretobuildthebinaries)。博主将依赖的opencv拷贝到了虚拟环境中,并修改了依赖的路基。可能出现的问题cmake编译过程中可能出现的问题cmake编译出现Downloadfailed的问题。在wheretobuildthebinaries位置里面有个CMakeDownloadLog.txt,将里面下载链接复制到浏览器进行下载,将其和whereisthesourcecode里面的.cache文件夹里面内容相对应,下图是下载失败时候,文件大小是0KB,手动下载完成后进行替换。注意用来替换的文件的名称要与对应空文件的名称保持一致。对于部分文件则需要将网页以另存为的方式进行替换,注意一定不要以复制网页内容粘贴到空文件的方式进行替换,这是无效的的。将整个.cache都用同样的方式进行处理。强调一点,出现这种问题,可以暂时先走完CMake编译过程,因为每一次Configuring都会有新的下载内容,然后再一次性将.cache的内容进行完整的替换,最后进行Configuring和Generate。这里博主提供自己的【.cache百度云,提取码:ctl6】VS2019编译过程中可能出现的问题通常是对于部分资源,vs2019没有管理员操作权限,因此只需要用管理员身份重新打开进行操作即可。测试使用GPU这里用一段简单的python代码验证安装完成的opencv是否支持gpu设备。importcv2#检查是否支持CUDAifcv2.cuda.getCudaEnabledDeviceCount():print("检测到支持CUDA的设备数量:",cv2.cuda.getCudaEnabledDeviceCount())else:print("未检测到支持CUDA的设备")123456验证成功,oepncv-cuda版本源码编译成功。总结尽可能简单、详细的介绍windows10下Python版本opencv4.8.0-cuda版本用源码进行编译的详细流程。
|
|