Reputation: 141
I am trying to build openCV 4.0.0 with cuda 11 on Ubuntu 18.04. following is my cmakefile
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 ..
I am getting the following error
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
I tested the cuda/cudnn examples and they run fine. Any help would be much appreciated.
Upvotes: 4
Views: 9129
Reputation: 11
I would recommend just to checkout from the master branch the FindCUDA.cmake and OpenCVDetectCuda.cmake
(For this fix you need to have it cloned from github)
If not:
git clone https://github.com/opencv/opencv.git
cd opencv; git checkout 4.2.0
Now you are ready to get from master the files:
git checkout master cmake/FindCUDA.cmake cmake/OpenCVDetectCUDA.cmake
rm -r build/; mkdir build; cd build;
#Erase cache
Now you are ready to build!
cmake [ OPTIONS ] ..
As I have read before, CUDA has changed a lot. At versions greater than 7.5, the nppi library seemed to be split in multiple libraries, and above 11 (I guess) nppicom was deleted. Greater OpenCV versions handle this, but 4.2 doesn't.
Upvotes: 1
Reputation: 31
It seems to be because of version compatibility issues. I had been looking for a solution to the same issue for two weeks. I was trying to get OpenCV-4.2.0 to work on Ubuntu-20.04 with CUDA-11.1 and CUDNN-8.0.5, but it never worked.
After reading @antb52's comment, I tried to install OpenCV-4.4.0 instead, and it worked! Now, problem solved!!!
Upvotes: 3
Reputation: 11
In my case for CUDA 11.1 with OpenCV 4.4.0 on Ubuntu 18.04, Adding -DCUDA_nppicom_LIBRARY=true to cmake in Dockerfile solved the issue.
Upvotes: 1
Reputation: 29
not so direct, CUDA 11.0 need c++14 and an an up to date compiler g++-9 but opencv stay in c++11, lot of problems, better wait for opencv 4.4. The same stuff for libcudnn8 who break the api and the include (cudnn_version_v8.h for example). good luck
Upvotes: 0
Reputation: 131
I have the same problem, looks like nppicom is deprecated so you will need to ignore it in the FindCUDA.cmake file, as shown in this link
Upvotes: 0
Reputation: 435
try run cmake-gui ..
or ccmake ..
in build folder to see all options, the error show that cmake cannot detect the location of the dependencies...
cmake-gui comes with the newest cmake, download it from here.
don't forget to uninstall the old ones if you want to install the newest cmake
ccmake is similar, just different gui..., to install sudo apt install cmake-curses-gui
. when installing ccmake, you don't need uninstall the cmake, you can use the old ones.
when you run it, you will see many configuration, set the folder of dependencies that said NOT FOUND (that causes error), to the folder where the dependencies installed.
if you not yet install the dependencies, install it, pointing the folder and re-configure again..
if one or more problem occurs in installing, then you decide to not use it, looking for the option WITH_the_dependencies
, and set it OFF
to prevent the error.
Upvotes: 0