原因:CUDA有一些接口过期了。
解决办法:
cmake增加选项:-D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D BUILD_opencv_cudacodec=ON
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=on \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_NVCUVID=on \ -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D BUILD_opencv_cudacodec=ON \ -D CUDA_GENERATION=Auto -D WITH_OPENCL=OFF -D WITH_OPENCL_SVM=off \ -D WITH_OPENCLAMDFFT=off -D WITH_OPENCLAMDBLAS=off \ -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D ENABLE_CXX11=1 \ -D WITH_FFMPEG=ON \ -D FFMPEG_LIBRARY_DIRS="/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/local/cuda-10.0/lib64;/usr/local/include/ffnvcodec" \ -D PYTHON2_NUMPY_INCLUDE_DIRS="/usr/local/lib/python2.7/dist-packages/numpy/core/include" \ -D PYTHON3_NUMPY_INCLUDE_DIRS="/usr/local/lib/python3.5/site-packages/numpy/core/include" \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.5/modules \ ..
有一次莫名其妙的编译过了,重新编译……不过。
有人建议:
下载video_sdk。
然后复制头文件/usr/local/cuda/include/。
修改modules/cudacodec/src下的hpp文件,如下:
#if CUDA_VERSION >= 9000 && CUDA_VERSION < 10000 #include <dynlink_nvcuvid.h> #else #include <nvcuvid.h> #endif
看这意思,是改回去了?