编译OpenCV+CUDA时报错no instance of overloaded function “cv::cudev::blockReduce”

编译CUDA支持的OpenCV时可能会出现编译错误:

Error: no instance of overloaded function “cv::cudev::blockReduce” matches the argument list

报错信息翻译成人话:CUDA中不存在OpenCV想调用的那个实例。也就是说,当前版本OpenCVCUDA不匹配。
例如,我尝试编译OpenCV4.8.0+CUDA12.6,便会产生上述报错。
解决办法:降低CUDA版本,或使用更高版本的OpenCV。在我的例子里,使用CUDA版本11.6即可。

省流:OpenCV和CUDA版本对应关系

OpenCV4.84.9均支持CUDA<=12.3编译。如果同时启用了cuDNN,务必使用cuDNN<=8.9.7版本。使用了错误的cuDNN版本,可能会报错:

‘cudnnSetRNNDescriptor_v6’: identifier not found

OpenCV4.10起支持CUDA>=12.6编译。

报错的根本原因

GitHub issue: CUDA Toolkit 12.4.0 tuple incompatibility

编译好的带CUDA支持的OpenCV-Python

访问github仓库下载,提供了多版本OpenCV的.whl文件。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐