opencv 3.4.9+opencv_contrib_3.4.9+cuda11.0 安装出错处理
出错处理:使用cmake-gui编译
1.错误:Unsupported gpu architecture ‘compute_30’
解决方法:
此时可以在配置的时候 CUDA_ARCH_BIN 选项去掉3.0,如下图所示:
2.错误:CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctly in the CMake files:CUDA_nppicom_LIBRARY (ADVANCED)
解决方法:
因为cuda 11移除了nppicom库,在opencv-x.x.x/cmake/文件夹下,找到OpenCVDetectCUDA.cmake文件,找到下述if(CUDA_FOUND)的位置,在下面加上去掉nppicom的库的指令(行前有+号的)。
...
if(CUDA_FOUND)
set(HAVE_CUDA 1)
endif()
#在此处加入如下内容:
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
ocv_list_filterout(CUDA_nppi_LIBRARY "nppicom")
ocv_list_filterout(CUDA_npp_LIBRARY "nppicom")
endif()
#-------------------------------------------------------------------------
if(WITH_CUFFT)
set(HAVE_CUFFT 1)
...
然后再次configure应该是没有错误了,不要着急点击 generate,先看看还需要增加什么,如果不需要增加,直接略过下一部分。
3.错误:fatal error: dynlink_nvcuvid.h: No such file or directory
解决方法:
#出错在: opencv的modules目录下
modules/cudacodec/src/precomp.hpp
modules/cudacodec/src/frame_queue.hpp
modules/cudacodec/src/cuvid_video_source.hpp
modules/cudacodec/src/video_decoder.hpp
modules/cudacodec/src/video_parser.hpp
首先下载 nvidia-sdk 将其中的 nvcuvid.h, cuviddec.h copy 到 /usr/local/cuda/include/,同时将上面几个hpp中代码
if CUDA_VERSION >= 9000
改为:
if CUDA_VERSION >= 9000 && CUDA_VERSION < 10000