Windows10下编译支持Cuda的Python版OpenCV 3.4.15报错问题
问题排查方案
- 检查CMake配置项是否完整
- 确认已开启
BUILD_opencv_python3选项,同时验证CMake识别的Python3路径完全匹配你使用的Python3.9.5,包括解释器路径、头文件目录、库文件路径、Python包安装路径PYTHON3_PACKAGES_PATH,避免识别到其他版本的Python环境。 - 确认所有CUDA相关模块的编译选项已开启,包括
BUILD_opencv_cudaarithm、BUILD_opencv_cudabgsegm、BUILD_opencv_cudacodec、BUILD_opencv_cudafeatures2d、BUILD_opencv_cudafilters、BUILD_opencv_cudaimgproc、BUILD_opencv_cudalegacy、BUILD_opencv_cudaobjdetect、BUILD_opencv_cudaoptflow、BUILD_opencv_cudastereo、BUILD_opencv_cudawarping、BUILD_opencv_cudev,以上任意模块未开启都会导致Python绑定不包含对应CUDA接口,最终生成的包体积偏小。 - 确认已开启
OPENCV_ENABLE_NONFREE选项,部分CUDA功能依赖该选项才会编译到Python绑定中。
- 确认已开启
- 验证编译日志是否存在异常
编译ALL_BUILD目标时,重点查看输出日志中Python3绑定的编译、链接阶段内容,确认没有跳过CUDA模块绑定生成、没有CUDA库链接失败的报错。如果CUDA库路径未被正确识别,Python绑定会自动跳过CUDA相关部分的编译,仅生成基础OpenCV接口,对应包体积仅几MB。 - 排查Python环境包冲突
先执行命令pip uninstall opencv-python opencv-contrib-python opencv-python-headless -y卸载所有pip安装的OpenCV相关包,避免运行时导入了其他路径的非自行编译版本。导入cv2后执行print(cv2.__file__),确认路径与你编译输出的C:\Users\Name\AppData\Local\Programs\Python\Python39\Lib\site-packages\cv2一致。 - 确认版本接口差异
OpenCV 3.4.x的Python CUDA接口与高版本存在少量命名差异,编译完成后可执行print(dir(cv2.cuda))查看当前版本暴露的所有CUDA相关属性,确认目标接口是否存在。
内容的提问来源于stack exchange,提问作者anosmia
相关产品推荐
相关产品推荐

