Windows10下编译带CUDA的OpenCV4.4运行dnn.forward报错无CUDA支持如何解决
OpenCV DNN模块CUDA支持报错解决方案
前提说明
你的MX130显卡CUDA算力确实为6.1,已配置对应CMake参数仍报错可按以下步骤逐一排查解决:
- 确认编译时与运行时CUDA版本完全一致
编译OpenCV使用的CUDA版本、系统环境变量中默认的CUDA版本、Python环境调用的CUDA依赖版本必须完全匹配,不可出现编译用CUDA10.2、运行时系统默认CUDA为11.x的情况。
检查方式:打开cmd执行nvcc -V,确认输出的版本号与编译时选择的CUDA版本完全匹配。如果是多版本CUDA共存,将编译所用CUDA版本的路径在系统PATH环境变量中移至最顶部,重启电脑生效。 - 重新核对CMake编译配置
删除之前的编译缓存,重新配置CMake时确认以下参数全部正确设置:- 勾选
WITH_CUDA - 勾选
WITH_CUDNN(DNN模块CUDA加速必须开启) - 勾选
OPENCV_DNN_CUDA(该参数未开启的话,其他CUDA功能正常也会导致DNN模块无法调用CUDA) CUDA_ARCH_BIN仅填写6.1,无需添加其他不相关算力值避免编译出错CUDA_ARCH_PTX填写6.1,保证同算力设备的兼容支持
- 勾选
- 确认Python调用的是你编译的带CUDA支持的OpenCV版本
执行以下代码确认路径:
如果输出路径为pip安装的opencv-python相关路径,而非你自行编译的安装路径,执行命令卸载所有pip安装的OpenCV包:import cv2 print(cv2.__file__)pip uninstall opencv-python opencv-contrib-python opencv-python-headless -y
之后将你编译生成的cv2.pyd文件复制到Python对应环境的site-packages目录下即可。 - 检查显卡驱动与显存占用
升级NVIDIA显卡驱动到最新正式版,MX130旧版本驱动可能存在CUDA适配问题;执行nvidia-smi查看显存占用,关闭占用显存的不必要程序后再运行代码,避免显存不足导致CUDA后端初始化失败。
所有配置确认无误后重新完整编译一次OpenCV,编译全程不要中断,确认所有CUDA相关模块编译无报错即可解决该问题。
内容的提问来源于stack exchange,提问作者Kamruzzaman Tauhid
相关产品推荐
相关产品推荐

