【问题标题】:CMake Error: Variables are set to NOTFOUNDCMake 错误:变量设置为 NOTFOUND
【发布时间】:2018-03-16 23:26:48
【问题描述】:

我首先使用 cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb 安装了 cuda。现在我正在尝试安装 OpenCV 3.3.0 但我收到 CMake 错误:

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_nppi_LIBRARY (ADVANCED)

然后是一个很长的目标列表,如下所示:

linked by target "opencv_cudev" in directory /home/jjros/opencv-3.3.0/modules/cudev

我正在使用这个命令来编译库:

cmake 

-D CMAKE_C_COMPILER=/usr/bin/gcc-5 \ 
-D CMAKE_BUILD_TYPE=RELEASE \   
-D CMAKE_INSTALL_PREFIX=/usr/local \     
-D WITH_CUDA=ON \     
-D WITH_CUBLAS=ON \     
-D WITH_TBB=ON \    
-D WITH_V4L=ON \    
-D WITH_QT=ON \     
-D WITH_OPENGL=ON \    
-D ENABLE_FAST_MATH=1 \        
-D CUDA_FAST_MATH=1 \        
-D WITH_CUBLAS=1 \        
-D INSTALL_C_EXAMPLES=OFF \    
-D INSTALL_PYTHON_EXAMPLES=ON \        
-D BUILD_SHARED_LIBS=ON \        
-D WITH_GTK=ON \        
-D BUILD_EXAMPLES=ON \     
-D  CUDA_NVCC_FLAGS="-D_FORCE_INLINES" .. 

如何设置我的 CMakeLists?怎么了?

【问题讨论】:

  • OpenCV 未更新到 cuda 9... 一周前发布。在 cuda 9 中,他们将这个库分成更小的库。有些人创建了一个库that has all of the smaller ones。 Here 有人尝试修改 cmake 文件,但又出现与缺少数学变量相关的错误
  • 还修正了这一行的斜线:-D WITH_GTK=ON /
  • @api55 那么你建议我安装什么,安装哪个版本的 opencv 和 cuda 以及先安装哪个?我正在使用 ubuntu 16.04
  • 我认为 CUDA 8.0 应该可以工作,或者您尝试修改 cmake,通过添加 nppi 库划分的所有库并删除 nppi 库。我今天将尝试后者,如果可行,我将详细回答问题。但是我会使用 Windows 而不是 Ubuntu 进行测试,但它应该是相同的修复

标签: opencv cmake cuda ubuntu-16.04


【解决方案1】:

我尝试了以下方法并且成功了:

将FindCUDA.cmake 和nppi 库更改为几个拆分的库。这必须在 3 个地方完成。请记住,此更改只是为了使其适用于 CUDA 9.0,我不会检查版本或任何内容,如果您打算将其提供给具有不同 CUDA 版本的不同人,则应该这样做。

1) 查找包含以下内容的行:

find_cuda_helper_libs(nppi)

并将其替换为以下行:

  find_cuda_helper_libs(nppial)
  find_cuda_helper_libs(nppicc)
  find_cuda_helper_libs(nppicom)
  find_cuda_helper_libs(nppidei)
  find_cuda_helper_libs(nppif)
  find_cuda_helper_libs(nppig)
  find_cuda_helper_libs(nppim)
  find_cuda_helper_libs(nppist)
  find_cuda_helper_libs(nppisu)
  find_cuda_helper_libs(nppitc)

2) 找线:

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")

并将其更改为

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")

3) 找到未设置的变量并添加新变量 所以,找到:

unset(CUDA_nppi_LIBRARY CACHE)

并将其更改为:

unset(CUDA_nppial_LIBRARY CACHE)
unset(CUDA_nppicc_LIBRARY CACHE)
unset(CUDA_nppicom_LIBRARY CACHE)
unset(CUDA_nppidei_LIBRARY CACHE)
unset(CUDA_nppif_LIBRARY CACHE)
unset(CUDA_nppig_LIBRARY CACHE)
unset(CUDA_nppim_LIBRARY CACHE)
unset(CUDA_nppist_LIBRARY CACHE)
unset(CUDA_nppisu_LIBRARY CACHE)
unset(CUDA_nppitc_LIBRARY CACHE)

而且在OpenCVDetectCUDA.cmake 中,您必须删除不再支持的 2.0 架构。

它有:

  ...
  set(__cuda_arch_ptx "")
  if(CUDA_GENERATION STREQUAL "Fermi")
    set(__cuda_arch_bin "2.0")
  elseif(CUDA_GENERATION STREQUAL "Kepler")
    set(__cuda_arch_bin "3.0 3.5 3.7")
  ...

应该是:

  ...
  set(__cuda_arch_ptx "")
  if(CUDA_GENERATION STREQUAL "Kepler")
    set(__cuda_arch_bin "3.0 3.5 3.7")
  elseif(CUDA_GENERATION STREQUAL "Maxwell")
    set(__cuda_arch_bin "5.0 5.2")
  ...

基本上我删除了第一个 if 并且第一个 elif 变成了一个 if。

@matko 提到 它还有:

set(__cuda_arch_bin "2.0 3.0 3.5 3.7 5.0 5.2 6.0 6.1") 

应该改为:

set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2 6.0 6.1") 

最后一件事是需要的。 CUDA 9.0 现在有一个用于半浮点 (cuda_fp16.h) 的单独文件。这需要包含在 OpenCV 中。

来自 CUDA 9.0 手册:

不支持的功能 通用 CUDA ‣ CUDA 库。内置函数 __float2half_rn() 和 __half2float() 已被删除。在 CUDA 工具包中更新的 fp16 头文件中使用等效功能。

为此,您需要添加:

#include <cuda_fp16.h>

在头文件中

opencv-3.3.0\modules\cudev\include\opencv2\cudev\common.hpp

这是 OpenCV 确定补丁的基础。它缺少什么,就像我之前告诉过你的那样,我不关心 CUDA 版本(它需要一个 IF)。此外,CUDA 9.0 有一堆 OpenCV 使用的不推荐使用的功能......这可能会在某个时候被 OpenCV 团队取代。也有可能一个或多个 nppi 的拆分库没有被使用。

最终建议: 对于这种具有如此多选项的复杂 cmake,您应该使用 ccmake (sudo apt-get install cmake-curses-gui) 以便能够轻松更改变量或至少查看值,或真正的 GUI。

对于其他使用 Windows 和 Visual Studio 7 的人,我还必须更改 CUDA_HOST_COMPILER 变量,否则您会收到一堆错误 cmd.exe exit with code 1 或类似的东西......似乎它无法到达那里自动检测到的。

这对我来说适用于 OpenCV 3.3 和 CUDA 9.0 以及 Visual Studio 2017 和 Windows 10。我认为它也应该适用于 Ubuntu,因为错误和更改与 CUDA 有关。我没有进行太多测试,我编译并运行了一些性能测试,所有测试都通过了......所以我认为一切正常。

【讨论】:

  • 我遇到了与 gpu 架构相关的错误。我正在努力解决它。它说: nvcc fatal : Unsupported gpu architecture 'compute_20' CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:208 (message): Error generated /home/jjros/opencv-3.3.0/build/modules/core/CMakeFiles/cuda_compile .dir/src/cuda/./cuda_compile_generated_gpu_mat.cu.o
  • @Ja_cpp 这也在答案中,但变量可能永远不会取消设置/重置,您可以删除构建文件夹并重新开始,或者您可以设置从 cuda_arch_bin 删除 2.0 的变量,因为CUDA 9.0 不再支持 Fermi 架构
  • 真的很有帮助。感谢您的详细指南。你应该把它写在某个地方。
  • 谢谢你的回答,它救了我。
  • 完美,不问您是如何进行所有这些更改的。但它奏效了,非常感谢:)
【解决方案2】:

@api55 我基于这个过程可以完成但是还是遇到@Ja_cpp问题(CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:208 (message)),在我的过程中,还需要添加

在

OpenCVDetectCUDA.cmake

它有:

set(__cuda_arch_bin "2.0 3.0 3.5 3.7 5.0 5.2 6.0 6.1") 

改为:

set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2 6.0 6.1")

它对我有用。

【讨论】:

    【解决方案3】:

    从https://github.com/opencv/opencv/tree/master/cmake(主分支-opencv 3.4.1)替换FindCUDA.cmake和OpenCVDetectCUDA.cmake适用于opencv_2.4.13 使用 Pascal 架构的 NVIDIA TitanXP 显卡和 Ubuntu 16.04 上的 cuda-9.0。

    【讨论】:

    • 我试过了,我得到了这些错误:/usr/bin/ld: cannot find -lcudart /usr/bin/ld: cannot find -lnppc /usr/bin/ld: cannot find -lnppial /usr/bin/ld: cannot find -lnppicc /usr/bin/ld: cannot find -lnppicom /usr/bin/ld: cannot find -lnppidei /usr/bin/ld: cannot find -lnppif /usr/bin/ld: cannot find -lnppig /usr/bin/ld: cannot find -lnppim /usr/bin/ld: cannot find -lnppist ...
    • @Kasparov92,我认为您需要将您的 CUDA lib 目录添加到 LD_LIBRARY_PATH。您可以这样做,将文件“cuda.conf”添加到目录“/etc/ld.so.conf.d/”,内容为“/usr/local/cuda/lib”,然后运行“sudo ldconfig”
    【解决方案4】:

    这在带有 OpenCV 4.2.0 和 CUDA 10.0 的 Ubuntu 18.04 上对我有用

    显然,我缺少指向这些库的符号链接,因此 CMake 找不到它们:

    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppc.so.9.1 /usr/lib/x86_64-linux-gnu/libnppc.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppial.so.9.1 /usr/lib/x86_64-linux-gnu/libnppial.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppicc.so.9.1 /usr/lib/x86_64-linux-gnu/libnppicc.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppicom.so.9.1 /usr/lib/x86_64-linux-gnu/libnppicom.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppidei.so.9.1 /usr/lib/x86_64-linux-gnu/libnppidei.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppif.so.9.1 /usr/lib/x86_64-linux-gnu/libnppif.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppig.so.9.1 /usr/lib/x86_64-linux-gnu/libnppig.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppim.so.9.1 /usr/lib/x86_64-linux-gnu/libnppim.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppist.so.9.1 /usr/lib/x86_64-linux-gnu/libnppist.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppisu.so.9.1 /usr/lib/x86_64-linux-gnu/libnppisu.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnppitc.so.9.1 /usr/lib/x86_64-linux-gnu/libnppitc.so
    sudo ln -s /usr/lib/x86_64-linux-gnu/libnpps.so.9.1 /usr/lib/x86_64-linux-gnu/libnpps.so
    

    更新: 虽然上面的命令让我可以成功运行CMake,但我仍然无法构建。 sudo apt-get install nvidia-cuda-toolkit 成功了。

    【讨论】:

      【解决方案5】:

      我还必须在 OpenCVDetectCUDA.cmake 中执行以下操作:

      替换

          if(${CUDA_VERSION} VERSION_LESS "8.0")
             set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2")
           else()
             set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2 6.0 6.1")
           endif()
      

      与

          if(${CUDA_VERSION} VERSION_LESS "8.0")
            set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2")    
            set(CUDA_ARCH_BIN "3.0 3.5 3.7 5.0 5.2")
          else()
            set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2 6.0 6.1")
            set(CUDA_ARCH_BIN "3.0 3.5 3.7 5.0 5.2 6.0 6.1")
          endif()
      

      【讨论】:

        【解决方案6】:

        我在使用下一个设置进行安装时遇到了同样的错误。

        Ubuntu 18.04 cuda、cudnn、opencv 4.2 和 4.3。已多次尝试解决此问题,并最终推出了下一个工作安装。

        重要的是尚未安装驱动程序。注意到我的安装只能从全新安装的 ubuntu 中工作

        根据您的情况更改 GPU_ARCH 版本。检查https://developer.nvidia.com/cuda-gpus 以获取您的版本

        export CUDA_VERSION='10.2.89'
        export CUDA_PKG_VERSION='10-2=10.2.89-1'
        export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
        export LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
        export NCCL_VERSION='2.5.6'
        export CUDNN_VERSION='7.6.5.32'
        export OPENCV_VERSION='4.3.0'
        export GPU_ARCH='6.1'
        
        apt-get update  && \
        apt-get install -y --no-install-recommends \
        gnupg2 curl ca-certificates && \
            curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub | apt-key add - && \
            echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list && \
            echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list
        
        
        apt-get update && \
        apt-get install -y --no-install-recommends \
                cuda-cudart-$CUDA_PKG_VERSION \
        cuda-compat-10-2 && \
        ln -s cuda-10.2 /usr/local/cuda
        
        
        apt-get update && \
        apt-get install -y --no-install-recommends \
            cuda-libraries-$CUDA_PKG_VERSION \
        cuda-nvtx-$CUDA_PKG_VERSION \
        libcublas10=10.2.2.89-1 \
        libnccl2=$NCCL_VERSION-1+cuda10.2 && \
            apt-mark hold libnccl2 
        
        
        apt-get update && apt-get install -y --no-install-recommends \
            libcudnn7=$CUDNN_VERSION-1+cuda10.2 && \
            apt-mark hold libcudnn7
        
        
        apt-get update && apt-get install -y --no-install-recommends \
                cuda-nvml-dev-$CUDA_PKG_VERSION \
                cuda-command-line-tools-$CUDA_PKG_VERSION \
        cuda-libraries-dev-$CUDA_PKG_VERSION \
                cuda-minimal-build-$CUDA_PKG_VERSION \
                libnccl-dev=$NCCL_VERSION-1+cuda10.2 \
        libcublas-dev=10.2.2.89-1
        
        
        apt-get update && apt-get install -y --no-install-recommends \
            libcudnn7=$CUDNN_VERSION-1+cuda10.2 \
        libcudnn7-dev=$CUDNN_VERSION-1+cuda10.2 && \
            apt-mark hold libcudnn7
        
        
        
        apt update && \
            apt install -y \
            tzdata \
            git \
            cmake \
            wget \
            unzip \
            build-essential \
            zlib1g-dev \
            libjpeg-dev \
            libwebp-dev \
            libpng-dev \
            libtiff5-dev \
            libopenexr-dev \
            libgdal-dev \
            libgtk2.0-dev \
            libdc1394-22-dev \
            libavcodec-dev \
            libavformat-dev \
            libswscale-dev \
            libtheora-dev \
            libvorbis-dev \
            libxvidcore-dev \
            libx264-dev \
            yasm \
            libopencore-amrnb-dev \
            libopencore-amrwb-dev \
            libv4l-dev \
            libxine2-dev \
            libgstreamer1.0-dev \
            libgstreamer-plugins-base1.0-dev \
            libtbb-dev \
            libeigen3-dev \
            python3-dev \
            python3-tk \
            python3-numpy
        
        
        
        wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \
            unzip ${OPENCV_VERSION}.zip && rm ${OPENCV_VERSION}.zip && \
            mv opencv-${OPENCV_VERSION} OpenCV && \
            cd OpenCV && \
            wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \
            unzip ${OPENCV_VERSION}.zip && \
            mkdir build && \
            cd build && \
            cmake \
              -D WITH_TBB=ON \
              -D CMAKE_BUILD_TYPE=RELEASE \
              -D BUILD_EXAMPLES=ON \
              -D WITH_FFMPEG=ON \
              -D WITH_V4L=ON \
              -D WITH_OPENGL=ON \
              -D WITH_CUDA=ON \
              -D WITH_GSTREAMER=ON \
              -D OPENCV_DNN_CUDA=ON \
              -D CUDA_ARCH_BIN=${GPU_ARCH} \
              -D CUDA_ARCH_PTX=${GPU_ARCH} \
              -D WITH_CUBLAS=ON \
              -D WITH_CUFFT=ON \
              -D WITH_EIGEN=ON \
              -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
              -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-${OPENCV_VERSION}/modules/ \
              ..
        
        make all -j$(nproc)
        make
        

        【讨论】:

          【解决方案7】:

          @api55 解决方案解决了与CUDA_nppi_LIBRARY 相关的错误。因此,只需按照步骤操作即可(对我而言,Ubuntu 16.04 和 opencv 3.3)。 确保支持您的 GPU 架构。我有 Fermi 不再受支持。解决方案是在安装opencv 3.3 支持cuda 时,安装Cuda-8 和gcc-5 编译器。

          【讨论】:

            【解决方案8】:

            试过api555说的方式,但是cmake的时候,也是build sm20,我做了一点,两种方式:

            1.在OpenCVDetectCUDA.cmake文件第133行,在“foreach(ARCH IN LISTS ARCH_LIST)”循环中,添加 “elseif(ARCH MATCHES "20")” 在 if 和 else 之间。

            2.在文件 OpenCVDetectCUDA.cmake 中,第 46 行, “set(_generations "Fermi" "kepler" "Maxwell" "Pascal")” 只需删除“费米”

            我更喜欢第二种方式,希望对你有一点帮助。

            【讨论】:

              【解决方案9】:

              我在这里用 cuda 安装 opencv4.2 时遇到了同样的问题。

              我的 cmake 版本一开始是 3.16.2。但是,此版本不支持 HTTP 下载,因此您可能会遇到下载失败的问题。

              于是我重新安装了我的cmake到3.9版本,支持HTTP协议,下载问题解决了。

              但新问题与上面提到的@ja_cpp 相同。 (cmake时找不到CUDA_nppi_LIBRARY (ADVANCED))

              我按照@api55的方法修改了FindCUDA.cmake和OpenCVDetectCUDA.cmake, 但问题仍然存在。

              因为我安装的是opencv4.2而不是opecv3所以我认为这就是修改不起作用的原因。

              最棘手的是,我将我的 cmake 版本更新回 3.16.2,并再次使用未修改的文件再次 cmake,并且成功了!

              我使用了这个命令。

              cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D WITH_CUDA=ON -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_ARCH_BIN=6.1 -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D HAVE_opencv_python3=ON -D PYTHON_EXECUTABLE=~/pengwenchen/anaconda3/envs/pytorch/bin/python -D BUILD_EXAMPLES=ON ..
              

              我的环境:GPU-1080,cmake版本3.16.2,cuda版本10.0

              希望这个答案可以帮助那些正在使用 cuda 安装 opencv4.2 的人。 :)

              【讨论】:

                【解决方案10】:

                我已根据先前使用以下脚本的答案在 jetson nano(JetPack 4.5.1)上安装了 OpenCV 2.4.13.7(带有 CUDA、QT、FFMPEG 等):

                #!/bin/bash
                
                #The script was written for JetPack 4.5.1
                
                echo "** Install vnc"
                apt-get update -y 
                apt-get install vino -y
                
                chmod 777 /etc/X11/xorg.conf
                
                echo '
                   Section "Screen"
                   Identifier    "Default Screen"
                   Monitor       "Configured Monitor"
                   Device        "Tegra0"
                   SubSection "Display"
                       Depth    24
                       Virtual 1280 800 # Modify the resolution by editing these values
                       EndSubSection
                EndSection' >> /etc/X11/xorg.conf
                
                mkdir -p ~/.config/autostart
                cp /usr/share/applications/vino-server.desktop ~/.config/autostart
                
                dbus-launch gsettings set org.gnome.Vino prompt-enabled false 
                dbus-launch gsettings set org.gnome.Vino require-encryption false    
                
                dbus-launch gsettings set org.gnome.Vino authentication-methods "['vnc']"       
                dbus-launch gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64) 
                
                echo "** Install requirements"
                apt-get update -y  
                apt-get install nano -y
                apt-get install libc-ares-dev -y  
                apt-get install uuid-dev -y  
                apt-get install libssl-dev -y  
                apt-get install libcurl4-openssl-dev -y   
                apt-get install git -y  
                apt-get install build-essential -y  
                apt-get install libgtk2.0-dev -y
                apt-get install pkg-config -y
                apt-get install libavcodec-dev -y 
                apt-get install libavformat-dev -y 
                apt-get install libswscale-dev -y
                apt-get install python-dev -y 
                apt-get install python-numpy -y 
                apt-get install libtbb2 -y 
                apt-get install libtbb-dev -y 
                apt-get install libjpeg-dev -y 
                apt-get install libpng-dev -y
                apt-get install libtiff-dev -y
                apt-get install libjasper-dev -y
                apt-get install libdc1394-22-dev -y
                apt-get install libv4l-dev -y 
                apt-get install v4l2ucp -y 
                apt-get install v4l-utils -y
                apt-get install libtesseract-dev -y 
                apt-get install libleptonica-dev -y  
                apt-get install tesseract-ocr-eng -y
                apt-get install libcanberra-gtk3-module -y
                apt-get install qt5-default -y
                apt-get  install libcanberra-gtk-module -y
                apt-get  install wget -y 
                apt-get  install gcc -y   
                apt-get  install g++ -y
                #if you need to update your GCC please uncomment the commands below      
                #apt-get install software-properties-common -y
                #add-apt-repository ppa:ubuntu-toolchain-r/test -y
                #apt-get update
                #apt-get install gcc-9 g++-9 -y
                #update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20 --slave /usr/bin/g++ g++ /usr/bin/g++-9
                #gcc --version
                
                cd /tmp
                
                echo "** Install cmake"
                wget https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4.tar.gz   
                tar zxvf cmake-3.16.4.tar.gz    
                cd cmake-3.16.4 
                ./configure 
                make   
                make install  
                cmake -version  
                cd ..
                rm -r cmake* 
                
                echo "** Install OpenCV 2.4.13.7"
                #first, need to remove the previous version of OpenCV
                apt-get purge *libopencv* -y
                
                git clone -b 2.4 --single-branch https://github.com/opencv/opencv.git
                cd opencv
                git checkout 2.4.13.7
                
                #need to implement some changes to build OpenCV with CUDA and QT
                old_line='find_cuda_helper_libs(nppi)'
                new_line='find_cuda_helper_libs(nppial)\n  find_cuda_helper_libs(nppicc)\n  find_cuda_helper_libs(nppicom)\n  find_cuda_helper_libs(nppidei)\n  find_cuda_helper_libs(nppif)\n  find_cuda_helper_libs(nppig)\n  find_cuda_helper_libs(nppim)\n  find_cuda_helper_libs(nppist)\n  find_cuda_helper_libs(nppisu)\n  find_cuda_helper_libs(nppitc)'
                sed -i -e "s/$old_line/$new_line/g" cmake/FindCUDA.cmake 
                
                old_line='set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")'
                new_line='set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")'
                sed -i -e "s/$old_line/$new_line/g" cmake/FindCUDA.cmake
                
                old_line='unset(CUDA_nppi_LIBRARY CACHE)'
                new_line='unset(CUDA_nppial_LIBRARY CACHE)\n  unset(CUDA_nppicc_LIBRARY CACHE)\n  unset(CUDA_nppicom_LIBRARY CACHE)\n  unset(CUDA_nppidei_LIBRARY CACHE)\n  unset(CUDA_nppif_LIBRARY CACHE)\n  unset(CUDA_nppig_LIBRARY CACHE)\n  unset(CUDA_nppim_LIBRARY CACHE)\n  unset(CUDA_nppist_LIBRARY CACHE)\n  unset(CUDA_nppisu_LIBRARY CACHE)\n  unset(CUDA_nppitc_LIBRARY CACHE)'
                sed -i -e "s/$old_line/$new_line/g" cmake/FindCUDA.cmake 
                
                old_line='glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);'
                new_line='\/\/glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);'
                sed -i -e "s/$old_line/$new_line/g" modules/highgui/src/window_QT.cpp
                
                sed -i -e '61,65s/^/\/\/ /' -e '67s/^/\/\/ /' /usr/local/cuda-10.2/include/cuda_gl_interop.h 
                
                cd ..
                
                git clone https://github.com/opencv/opencv_extra.git
                cd opencv_extra
                git checkout 2.4.13.7
                cd ..
                
                mkdir release
                cd release
                
                cmake \
                  -D CMAKE_CXX_COMPILER=/usr/bin/g++-7          \
                  -D CMAKE_C_COMPILER=/usr/bin/gcc-7            \
                  -D CMAKE_BUILD_TYPE=RELEASE                   \
                  -D INSTALL_C_EXAMPLES=ON                      \
                  -D CMAKE_INSTALL_PREFIX=/usr/local            \
                  -D ENABLE_FAST_MATH=ON                        \
                  -D WITH_V4L=ON                                \
                  -D WITH_OPENGL=ON                             \
                  -D WITH_CUDA=ON                               \
                  -D WITH_QT=ON                                 \
                  -D WITH_CUBLAS=ON                             \
                  -D WITH_LIBV4L=ON                             \
                  -D WITH_GSTREAMER=ON                          \
                  -D WITH_FFMPEG=ON                             \
                  -D WITH_GTK=ON                                \
                  -D BUILD_EXAMPLES=ON                          \
                  -D BUILD_opencv_python2=ON                    \
                  -D BUILD_opencv_python3=ON                    \
                  -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \
                  -D CUDA_ARCH_BIN=5.3                          \
                  -D CUDA_ARCH_PTX=""                           \
                  -D CUDA_FAST_MATH=ON                          \
                  -D OPENCV_TEST_DATA_PATH=../opencv_extra/testdata ../opencv
                
                make -j4
                make install
                cd ..
                rm -r opencv*
                
                cd /etc/ld.so.conf.d
                touch opencv.conf
                chmod 777 opencv.conf
                echo "/usr/local/lib/libopencv_core.so.2.4" >> opencv.conf
                ldconfig -v
                
                sudo reboot
                

                【讨论】:

                  【解决方案11】:

                  用最新版本替换现有的opencv,它工作正常。呵呵

                  【讨论】:

                  • 尝试更清楚地解释为什么这是问题的答案。
                  • 下载最新版本的opencv即(opencv 4.0.1),替换.\openalpr\windows\opencv中已有文件并尝试编译。它对我有用。我能够构建 opencv_CUDA_Kepler。
                  • 无法生成“openalpr_CUDA_Kepler”如果您找到解决方案请帮忙
                  猜你喜欢
                  • 2018-06-05
                  • 2023-02-10
                  • 2020-12-24
                  • 2012-05-29
                  • 2023-03-04
                  • 1970-01-01
                  相关资源
                  最近更新 更多