Я пытаюсь скомпилировать OpenCV 2.4.13 из исходного кода с CUDA 9.0, CUDNN 7.0, как предложено в репозитории «MonocularTotalCapture», который вы можете найти здесь:
https://github.com/CMU-Perceptual-Computing-Lab/MonocularTotalCapture
Я установил Ubuntu 16.04 на компьютер с графическим процессором GTX 1060. Я установил cuda 9 и CUDNN 7. Теперь я пытаюсь установить OpenCV 2.4.13, но получаю сообщение об ошибке 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_core" in directory /home/ziom/Scrivania/MonocularTotalCapture/opencv-2.4.13.6/modules/core
Я знаю, что вопрос, подобный моему, уже решен здесь:
CMake Ошибка: переменные установлены в NOTFOUND
, и я попытался следуйте приведенным там советам, но я не смог исправить свою иссе, возможно, потому что у меня немного другой сценарий. В любом случае, я последовал предложению @ABM Nazibullah:
Замена FindCUDA.cmake и OpenCVDetectCUDA.cmake из https://github.com/opencv/opencv/tree/master/cmake (master branch-opencv 3.4.1) работает для меня для opencv_2.4.13 с графической картой NVIDIA TitanXP с архитектурой Pascal и cuda-9.0 в Ubuntu 16.04.
Infact, первый изменяемый файл, называемый "FindCUDA.cmake" был изменен правильно, в соответствии с предложением @ api55. Infact этот кусок кода был добавлен на месте старого:
if(CUDA_VERSION VERSION_GREATER "5.0")
# In CUDA 5.5 NPP was splitted onto 3 separate libraries.
find_cuda_helper_libs(nppc)
#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)
find_cuda_helper_libs(npps)
#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$
elseif(NOT CUDA_VERSION VERSION_LESS "4.0")
find_cuda_helper_libs(npp)
endif()
if(NOT CUDA_VERSION VERSION_LESS "7.0")
# cusolver showed up in version 7.0
find_cuda_helper_libs(cusolver)
endif()
, а также этот кусок кода заменил старый:
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}")
также этот код заменил старый:
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)
unset(CUDA_npps_LIBRARY CACHE)
unset(CUDA_nvcuvenc_LIBRARY CACHE)
unset(CUDA_nvcuvid_LIBRARY CACHE)
Что касается другого файла, называемого "OpenCVDetectCUDA.cmake" , я также изменил его точно так же, как объяснено там.
В конце концов, Я также добавил эту строку:
#include <cuda_fp16.h>
в этот заголовочный файл
/home/ziom/Scrivania/MonocularTotalCapture/opencv-2.4.13.6/modules/gpu/include/opencv2/gpu/device/common.hpp
, но ошибка не устранена.