在Ubuntu 18.04上使用cuda 11构建OpenCV-4.0.0

在Ubuntu 18.04上使用cuda 11构建OpenCV-4.0.0,opencv,opencv4,Opencv,Opencv4,我正试图在Ubuntu18.04上用CUDA11构建openCV 4.0.0。 下面是我的CMAKE文件 cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_C_COMPILER=/usr/bin/gcc-7 \ -D CMAKE_INSTALL_PREFIX=/usr/local/OpenCV-4.0.0 \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D W

我正试图在Ubuntu18.04上用CUDA11构建openCV 4.0.0。 下面是我的CMAKE文件

cmake -D CMAKE_BUILD_TYPE=RELEASE \
  -D CMAKE_C_COMPILER=/usr/bin/gcc-7 \
  -D CMAKE_INSTALL_PREFIX=/usr/local/OpenCV-4.0.0 \
  -D INSTALL_PYTHON_EXAMPLES=ON \
  -D INSTALL_C_EXAMPLES=OFF \
  -D WITH_TBB=ON \
  -D WITH_CUDA=ON \
  -D WITH_CUDNN=ON \
  -D OPENCV_DNN_CUDA=ON \
  -D CUDA_ARCH_BIN=7.5 \
  -D BUILD_opencv_cudacodec=OFF \
  -D ENABLE_FAST_MATH=1 \
  -D CUDA_FAST_MATH=1 \
  -D WITH_CUBLAS=1 \
  -D WITH_V4L=ON \
  -D WITH_QT=OFF \
  -D WITH_OPENGL=ON \
  -D WITH_GSTREAMER=ON \
  -D OPENCV_GENERATE_PKGCONFIG=ON \
  -D OPENCV_PC_FILE_NAME=opencv.pc \
  -D OPENCV_ENABLE_NONFREE=ON \
  -D OPENCV_PYTHON3_INSTALL_PATH=~/.virtualenvs/cv/lib/python3.6/site-packages \
  -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.0.0/modules \
  -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
  -D BUILD_EXAMPLES=ON ..
我得到以下错误

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)
    linked by target "opencv_cudev" in directory /home/ali/opencv_contrib-4.0.0/modules/cudev
    linked by target "opencv_cudev" in directory /home/ali/opencv_contrib-4.0.0/modules/cudev
    linked by target "opencv_test_cudev" in directory /home/ali/opencv_contrib-4.0.0/modules/cudev/test
    linked by target "opencv_test_core" in directory /home/ali/opencv-4.0.0/modules/core
    linked by target "opencv_core" in directory /home/ali/opencv-4.0.0/modules/core
    linked by target "opencv_core" in directory /home/ali/opencv-4.0.0/modules/core
    linked by target "opencv_perf_core" in directory /home/ali/opencv-4.0.0/modules/core
    linked by target "opencv_test_cudaarithm" in directory /home/ali/opencv_contrib-4.0.0/modules/cudaarithm
    linked by target "opencv_cudaarithm" in directory /home/ali/opencv_contrib-4.0.0/modules/cudaarithm
    linked by target "opencv_cudaarithm" in directory /home/ali/opencv_contrib-4.0.0/modules/cudaarithm
    linked by target "opencv_perf_cudaarithm" in directory /home/ali/opencv_contrib-4.0.0/modules/cudaarithm
    linked by target "opencv_flann" in directory /home/ali/opencv-4.0.0/modules/flann
    linked by target "opencv_flann" in directory /home/ali/opencv-4.0.0/modules/flann
    linked by target "opencv_test_flann" in directory /home/ali/opencv-4.0.0/modules/flann
    linked by target "opencv_test_hdf" in directory /home/ali/opencv_contrib-4.0.0/modules/hdf
    linked by target "opencv_hdf" in directory /home/ali/opencv_contrib-4.0.0/modules/hdf
    linked by target "opencv_hdf" in directory /home/ali/opencv_contrib-4.0.0/modules/hdf
    linked by target "opencv_test_imgproc" in directory /home/ali/opencv-4.0.0/modules/imgproc
    linked by target "opencv_imgproc" in directory /home/ali/opencv-4.0.0/modules/imgproc
    linked by target "opencv_imgproc" in directory /home/ali/opencv-4.0.0/modules/imgproc
    linked by target "opencv_perf_imgproc" in directory /home/ali/opencv-4.0.0/modules/imgproc
我测试了cuda/cudnn示例,它们运行良好。
任何帮助都将不胜感激。

请尝试在build文件夹中运行
cmake gui..
cmake..
以查看所有选项,错误显示cmake无法检测依赖项的位置

cmake gui附带最新的cmake,请从下载

如果你想安装最新的cmake,别忘了卸载旧的

cmake与之类似,只是不同的gui…,用于安装
sudo apt install cmake curses gui
。安装cmake时,不需要卸载cmake,可以使用旧的

当您运行它时,您将看到许多配置,将表示未找到(导致错误)的依赖项文件夹设置为安装依赖项的文件夹

如果尚未安装依赖项,请安装它,指向文件夹,然后重新配置


如果在安装过程中出现一个或多个问题,则您决定不使用它,查找带有依赖项的选项
,并将其设置为关闭
,以防止出现错误。

我也有同样的问题,看起来nppicom已被弃用,因此您需要在FindCUDA.cmake文件中忽略它,如图所示,CUDA11.0需要c++14和最新的编译器g++-9,但opencv仍停留在c++11中,有很多问题,最好等待opencv 4.4。对于libcudnn8来说,同样的东西破坏了api和include(例如cudnn_version_v8.h)。祝你好运

在我的例子中,Ubuntu18.04上带有OpenCV 4.4.0的CUDA 11.1在Dockerfile中添加了-DCUDA\u nppicom\u LIBRARY=true解决了这个问题。

这似乎是因为版本兼容性问题。两周来,我一直在寻找解决同一问题的办法。我曾试图让OpenCV-4.2.0与CUDA-11.1和CUDNN-8.0.5一起在Ubuntu-20.04上运行,但从未成功过


在阅读了@antb52的评论后,我尝试安装OpenCV-4.4.0,结果成功了!现在,问题解决了

很可能您使用的CMake或makefile(而不是opencv)实际上都不支持CUDA11。根据:注意,NPP从NPP 11.0开始就不推荐使用nppicom JPEG压缩库,请改用NVJPEG库。所以OpenCV必须更新其CmakeList以支持此更改。@Talonmes现在我安装了cuda-11.0。当我制作opencv时,make part也检测到了我的CUDA-11.0。但我还是会犯类似的错误。这些错误仅仅是因为opencv4.x.x与CUDA-11.0不兼容,还是还有其他原因?@Ali您能找到解决问题的方法吗?@Johny您能详细说明一下吗。我必须卸载NPP并安装NVJPEG吗。如果是,那么怎么做。我将如何在opencv的Cmakelists中进行更改。我希望使用cuda支持来构建它,在那里我会得到错误。我尝试了命令行和gui。两者都有相同的错误。你必须理解opencv就像一个框架,就像把所有的metodh放在一个包中一样。也就是说,虽然每个方法都可以工作,需要依赖关系,但cuda只是一个“连接器”,使您可以在GPU中完成所有计算。因此..,根据我几次安装绑定到cuda的opencv的经验,出现了错误,因为CV中使用模块的依赖项不存在。。同时,我的配置是设置opencv来推式添加它。因此,面对这种情况的选择是:安装依赖项或牺牲模块。请尝试阅读本文,可能您的问题与此类似@johny回答了这个问题,因为所需的依赖项已被弃用。因此,如果您按照上面链接中api55建议的步骤进行操作,也许您可以解决此问题。