Включить каталог OpenCV в установку YOLOv3 dar knet (AlexeyAB) в cmake - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь связать OpenCV с каталогом dar knet. Я работаю с Nvidia Jetson AGX Xavier (Ubuntu 18.04). До недавнего времени JetPack устанавливал OpenCV в каталог / usr. При такой конфигурации работало обнаружение в реальном времени дар knet (https://github.com/AlexeyAB/darknet) с веб-камерой.

Мне пришлось возобновить установку OpenCV, и теперь его каталог - home / user / OpenCV. Я не смог включить его в предыдущий каталог из-за отсутствия разрешений. Теперь каждый раз, когда я запускаю обнаружение dar knet в реальном времени с помощью команды

./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

Когда я перекомпилирую dar knet ( cmake, make, install) Я получаю еще одно сообщение об ошибке:

Demo needs OpenCV for webcam images.

Итак, я предполагаю, что OpenCV не включен в компиляцию и dar knet не находит библиотеки. Я проверил следующие параметры:

  • В Makefile dar knet 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.

У кого-то есть идея, как я мог бы сказать Дар 1050, где находится 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.

1 Ответ

0 голосов
/ 16 апреля 2020

Редактировать: если я включаю Find_Package (OpenCV) в CMakeLists.txt и перекомпилирую, я получаю этот вывод

Это хорошо. И как следующий шаг в каталоге сборки dar knet:

 cmake . -DOpenCV_DIR=/usr/share/OpenCV
...