opencv2: нет такого файла или каталога при попытке создать Darknet?

Я пытаюсь использовать Darkent с OpenCV и CUDA. Я установил даркнет по этой инструкции:

https://pjreddie.com/darknet/install/

Я установил CUDA по этой инструкции:

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

Наконец, я установил OpenCV согласно этим инструкциям:

http://www.linuxfromscratch.org/blfs/view/svn/general/opencv.html

Затем я добавил следующие строки в конец моего bashrc:

export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}

Затем я изменил Makefile в каталоге darknet так, чтобы GPU = 1 и OPENCV = 1. Я переделал и столкнулся с кучей повторяющихся ошибок:

No package 'opencv' found
gcc -Iinclude/ -Isrc/ -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV -DGPU -c ./src/lstm_layer.c -o obj/lstm_layer.o
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable

Я проверил, и хотя я добавил каталог / usr / local / lib / pkgconfig в свой PKG_CONFIG_PATH, файла opencv.pc там не было. Я погуглил и прочитал ответ, в котором предлагалось создать файл вручную, вот что я сделал со следующим содержанием:

prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version: 2.x.x
Cflags: -I${includedir}/opencv -I${includedir}/opencv2
Libs: -L${libdir} -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l

Это решило повторяющуюся ошибку, упомянутую выше, но я все еще получаю аналогичную ошибку, когда делаю:

./src/image_opencv.cpp:5:10: fatal error: opencv2/opencv.hpp: No such file or directory
    5 | #include "opencv2/opencv.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.

Я не уверен, исправил ли я первую проблему, и это отдельная проблема, или первое исправление просто устранило симптом, а не проблему. С тех пор я также пробовал:

sudo apt install libopencv-dev

безрезультатно.

pkg-config --modversion

производит: 2.x.x

pkg-config --cflags opencv

производит:

[code]
-I/usr/include/opencv -I/usr/include/opencv2
[/code]

Любая помощь будет принята с благодарностью. Я использую ubuntu 20.04, ядро ​​5.4.0-53-generic.


person John Doe    schedule 16.11.2020    source источник
comment
Можете ли вы использовать команду env и показать мне значения PATH, LD_LIBRARY_PATH и PKG_CONFIG_PATH?   -  person AbdelAziz AbdelLatef    schedule 17.11.2020
comment
ПУТЬ = / usr / local / cuda-11.1 / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / локальные / игры: / оснастка / bin LD_LIBRARY_PATH = / usr / local / cuda-11.1 / lib64 PKG_CONFIG_PATH = / usr / local / lib / pkgconfig   -  person John Doe    schedule 17.11.2020
comment
Вот чего я боялся.   -  person AbdelAziz AbdelLatef    schedule 17.11.2020


Ответы (1)


Я попробовал это, и это сработало, создайте opencv.pc файл с таким содержимым:

# Package Information for pkg-config

prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir_new=${prefix}/include/opencv4

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.5.0
Libs: -L${libdir} -lopencv_dnn -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_new}

и поместите его в /usr/local/lib/pkgconfig/.

person AbdelAziz AbdelLatef    schedule 16.11.2020
comment
Комментарии не подлежат расширенному обсуждению; этот разговор был перемещен в чат. - person Samuel Liew♦; 18.11.2020