CMake Error: Variables are set to NOTFOUND

CMake Error: Variables are set to NOTFOUND

我首先使用 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?怎么了?

我尝试了以下方法并且有效:

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 现在有一个单独的 halffloat (cuda_fp16.h) 文件。这需要包含在 OpenCV 中。

来自 CUDA 9.0 手册:

Unsupported Features General CUDA ‣ CUDA library. The built-in functions __float2half_rn() and __half2float() have been removed. Use equivalent functionality in the updated fp16 header file from the CUDA toolkit.

为此,您需要添加:

#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相关。我没有对其进行太多测试,我编译并 运行 一些性能测试并且所有测试都通过了...所以我认为一切正常。

@api55解决方案解决了CUDA_nppi_LIBRARY相关的错误。所以只要按照步骤操作就可以了(对我来说 Ubuntu 16.04opencv 3.3)。 确保您的 GPU 架构受支持。我有 Fermi 不再受支持。解决方法是在安装支持cuda的opencv 3.3时安装Cuda-8gcc-5编译器。

@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")

对我有用。

我还必须在 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()

https://github.com/opencv/opencv/tree/master/cmake 替换 FindCUDA.cmakeOpenCVDetectCUDA.cmake(主分支-opencv 3.4。 1) 为我工作 opencv_2.4.13 NVIDIA TitanXP Pascal 显卡架构和 cuda-9.0 在 Ubuntu 16.04.

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

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

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

我更喜欢第二种方式,希望能帮到你。

用最新版本替换现有的opencv,可以正常使用。 XD

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

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

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

但是新问题和上面@ja_cpp说的一样。 (CUDA_nppi_LIBRARY (ADVANCED) cmake 时找不到)

我按照@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的人。 :)

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

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

这对我在 Ubuntu 18.04 使用 OpenCV 4.2.0 和 CUDA 10.0

显然,我缺少指向这些库的符号链接,因此 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 成功了。

我已经根据之前的答案使用以下脚本在 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