提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论
OpenCV是一个开源的计算机视觉库,包含了核心模块和扩展模块,提供了基础的图像处理和计算机视觉算法,以及一些机器学习工具。而OpenCV Contrib是OpenCV社区贡献的一组扩展模块之一,包含了一些较为新颖和实用的算法和工具函数,提供了一些高级的图像处理和计算机视觉算法。这些功能和算法可能不适合所有用户或者还处于实验性阶段。OpenCV Contrib模块中的代码由社区贡献者开发和维护,它们提供了一些在OpenCV核心库中尚未包含的新特性和实验性功能。
cmake、vs2019、opencv4.8.0、opencv_contrib-4.8.0、anaconda、cuda、cudnn
安装cuda、cudnn可以参考此前博主的【深度学习windows10环境配置详细教程】,因为对于新手来说,需要注意的细节比较多,这里不浪费篇幅重复讲述了。
为了将CUDA版本的opencv安装到虚拟环境中,安装到默认环境(base)不需要执行此步骤。
# 搭建opencv环境 conda create -n opencv_onnx_gpu python=3.10.9 -y # 激活环境 activate opencv_onnx_gpu
虚拟环境中需要安装numpy,后续的编译过程中需要。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
在使用 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之前即可。
CMake官方下载地址,下载cmake-3.27.7-windows-x86_64.msi。
添加到环境和安装路径博主根据自身情况作出了修改,其他都是默认安装。
出现以下界面安装成功。
Opencv官方下载地址,下载OpenCV – 4.8.0 Sources,下载解压opencv-4.8.0.zip。
opencv_contrib官方下载地址,选择opencv对应的contrib版本,例如opencv4.8.0对应就是opencv_contrib-4.8.0.zip。下载后直接解压。
4.在Search搜索框搜索带cuda的关键字,全部勾选。
cmake编译过程是会从githup上下载数据,但是一般都会出现下载失败的情况,这里建议读者先跳到【可能出现的问题】这一小节,来确认是不是自己也出现了下载失败的情况。
没有任何报错信息就是编译完成,在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(where to build the binaries)。
博主将依赖的opencv拷贝到了虚拟环境中,并修改了依赖的路基。
cmake编译出现Download failed的问题。
在where to build the binaries位置里面有个CMakeDownloadLog.txt,将里面下载链接复制到浏览器进行下载,
将其和where is the source code里面的.cache文件夹里面内容相对应,下图是下载失败时候,文件大小是0KB,手动下载完成后进行替换。
注意用来替换的文件的名称要与对应空文件的名称保持一致。
对于部分文件则需要将网页以另存为的方式进行替换,注意一定不要以复制网页内容粘贴到空文件的方式进行替换,这是无效的的。
将整个.cache都用同样的方式进行处理。
强调一点,出现这种问题,可以暂时先走完CMake编译过程,因为每一次Configuring都会有新的下载内容,然后再一次性将.cache的内容进行完整的替换,最后进行Configuring和Generate。
这里博主提供自己的【.cache百度云 ,提取码:ctl6 】
通常是对于部分资源,vs2019没有管理员操作权限,因此只需要用管理员身份重新打开进行操作即可。
这里用一段简单的python代码验证安装完成的opencv是否支持gpu设备。
import cv2 # 检查是否支持CUDA if cv2.cuda.getCudaEnabledDeviceCount(): print("检测到支持CUDA的设备数量:", cv2.cuda.getCudaEnabledDeviceCount()) else: print("未检测到支持CUDA的设备")
验证成功,oepncv-cuda版本源码编译成功。
尽可能简单、详细的介绍windows10下Python版本opencv4.8.0-cuda版本用源码进行编译的详细流程。