#c #opencv #neural-network #qt-creator
#c #opencv #нейронная сеть #qt-creator
Вопрос:
Ошибка
Не удалось связать модуль OpenCV DNN с QtCreator : /home/joseph/Documents/dev/dnn_opencv/utils.cpp:52: ошибка: неопределенная ссылка на `cv::dnn::dnn4_v20200609::Net::Net()
Контекст
Привет, я пытаюсь загрузить некоторые модели с помощью модуля OpenCV DNN (OpenCV 4.4.0), чтобы выполнить некоторую классификацию / сегментацию в рамках более крупного проекта. Для этого я использую QtCreator (5.15.0) и gpp (10.1.0). OpenCV был собран из исходного кода с использованием OpenCV-contrib.
Мой файл .pro выглядит так :
TEMPLATE = app
CONFIG = console c 11
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH = "/usr/local/include/opencv4"
LIBS = -L"/usr/local/lib/"
-lopencv_highgui
-lopencv_imgproc
-lopencv_core
-lopencv_dnn
SOURCES =
main.cpp
utils.cpp
HEADERS =
utils.hpp
Проект пока очень прост, я могу запрашивать изображения с помощью OpenCV, так что, похоже, обычные библиотеки найдены. Однако всякий раз, когда я использую что-либо в модуле DNN, у меня возникает эта ошибка: /home/joseph/Documents /dev /dnn_opencv/utils.cpp: 52: ошибка: неопределенная ссылка на `cv::dnn::dnn4_v20200609::Net::Net()
Это происходит при вызове cv::dnn::Net net;
с использованием пространства имен или нет.
Я заметил, что в файле / usr /local /include/opencv4 /opencv2/dnn/version.hpp есть флаг #define OPENCV_DNN_API_VERSION 20200609
, который соответствует версии dnn, в которой должен быть найден класс Net, но я не знаю, к чему это может привести меня.
У меня нет большого опыта работы с Qmake и OpenCV, так что это, вероятно, простое исправление, но я был бы признателен за помощь. Спасибо!
Комментарии:
1. вы пробовали запускать свой код в простом консольном проекте?
2. Да, я пытался скомпилировать вручную с помощью
g main.cpp utils.cpp -o output
pkg-config —cflags —libs opencv`,-lopencv-dnn
действительно в —libs, но у меня такая же проблема. На самом деле, всякий раз, когда я пытаюсь выполнить какое-либо прямое распространение, ошибка в сети исчезает, и у меня есть/usr/local/include/opencv4/opencv2/core/cvstd_wrapper.hpp:100:72: error: no matching function for call to ‘std::shared_ptr<cv::Formatted>::shared_ptr(const char*amp;)’
Возможно, что содержимое не было правильно построено, вы знаете, как я мог бы это проверить?
Ответ №1:
Для тех, кто сталкивается с такой же проблемой, мне удалось правильно установить его и использовать в QtCreator, используя графический интерфейс Cmake и проверяя все правильные флаги. Я считаю, что это была ошибка установки, касающаяся модулей OpenCV-contrib. Эта ссылка является хорошим руководством по пометке правильных флагов : https://www.pyimagesearch.com/2018/08/17/install-opencv-4-on-macos /
Кроме того, странная ошибка, с которой я столкнулся в отношении error: no matching function for call to std::shared_ptr<cv::Formatted>::shared_ptr(const char*amp;)
, была связана только с вызовом print(...)
вместо printf
или cout
.