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.04
和 opencv 3.3
)。
确保您的 GPU 架构受支持。我有 Fermi
不再受支持。解决方法是在安装支持cuda的opencv 3.3
时安装Cuda-8
和gcc-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.cmake 和 OpenCVDetectCUDA.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
我首先使用 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.04
和 opencv 3.3
)。
确保您的 GPU 架构受支持。我有 Fermi
不再受支持。解决方法是在安装支持cuda的opencv 3.3
时安装Cuda-8
和gcc-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.cmake 和 OpenCVDetectCUDA.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