Я пытаюсь связать OpenCV с каталогом darknet. Я работаю с Nvidia Jetson AGX Xavier (Ubuntu 18.04). До недавнего времени OpenCV устанавливался JetPack в каталог / usr. С этой конфигурацией обнаружение даркнета в реальном времени (https://github.com/AlexeyAB/darknet) с веб-камерой работал.
Мне пришлось обновить установку OpenCV, и теперь его каталог - home / user / OpenCV. Мне не удалось включить его в предыдущий каталог из-за отсутствия разрешений. Теперь каждый раз, когда я запускаю обнаружение даркнета в реальном времени с помощью команды
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 0
Я получаю этот журнал ошибок:
./darknet: error while loading shared libraries: libopencv_highgui.so.3.3: cannot open shared object file: No such file or directory
Когда я перекомпилирую даркнет (cmake, make, install), я получаю еще одно сообщение об ошибке:
Demo needs OpenCV for webcam images.
Поэтому я предполагаю, что OpenCV не включен в компиляцию, а даркнет не находит библиотеки. Я тестировал такие варианты:
- В Makefile даркнета включен OPENCV = 1 (дважды проверено, полностью уверен, что это не ошибка)
Я попытался экспортировать путь OpenCV к его предыдущему пути, например. с экспортом OpenCV_DIR = / usr / share / OpenCV
Я пытался связать путь, например. с LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / usr / local / lib или LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / usr / share
Я думаю, что может быть возможность включить путь OpenCV в какой-то файл, связанный с cmake. В файле CmakeLists.txt есть строка
set(PThreads_windows_DIR ${CMAKE_CURRENT_LIST_DIR}/3rdparty/pthreads CACHE PATH "Path where pthreads for windows can be located")
endif()
set(Stb_DIR ${CMAKE_CURRENT_LIST_DIR}/3rdparty/stb CACHE PATH "Path where Stb image library can be located")
set(CMAKE_DEBUG_POSTFIX d)
set(CMAKE_THREAD_PREFER_PTHREAD ON)
find_package(Threads REQUIRED)
if(MSVC)
find_package(PThreads_windows REQUIRED)
endif()
if(ENABLE_OPENCV)
if(OpenCV_FOUND)
if(SELECT_OPENCV_MODULES)
Я думаю, здесь или, может быть, где-то еще я должен указать новый путь к каталогу OpenCV. Я пробовал использовать find_package или set_path, но не уверен, что это был правильный момент для ввода этой опции. Также у меня нет файла с названием finOpencv.cmake.
Есть ли у кого-нибудь идеи, как я могу «сказать» даркнет, где находится OpenCV?
Если вам понадобится дополнительная информация, я буду рад поделиться.
Любая помощь приветствуется. Спасибо!
Изменить: если я включу Find_Package (OpenCV) в CMakeLists.txt и перекомпилирую, я получу этот вывод:
CMake Warning at CMakeLists.txt:96 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" with any
of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
cmake
running. Если CMake не может найти OpenCV, то должно быть сообщение об этом с инструкциями по устранению проблемы. Кстати, включите это сообщение в свой вопрос. Я попытался экспортировать путь OpenCV на его предыдущий путь, например. сexport OpenCV_DIR=/usr/share/OpenCV
- вы хотите использовать новую установку OpenCV, но задайте для переменной старый путь. Почему?? - person Tsyvarev   schedule 11.04.2020OpenCV_DIR
в каталог, который содержит файлOpenCVConfig.cmake
илиopencv-config.cmake
. Независимо от того, содержит ли каталогlibopencv_highgui.so.3.3
или другие файлы библиотеки. - person Tsyvarev   schedule 12.04.2020CMakeLists.txt
уже имеет вызовfind_package(OpenCV)
на строка 96. Выглядит странно, что вы цитируете код без него. Я бы посоветовал вам повторно загрузить этот файл из репо и не изменять его после этого. - person Tsyvarev   schedule 12.04.2020