QtCreator 上对 opencv dnn 的未定义引用

Undefined reference to opencv dnn on QtCreator

错误

无法使用 QtCreator link OpenCV DNN 模块:/home/joseph/Documents/dev/dnn_opencv/utils.cpp:52:错误:对 `cv::dnn::dnn4_v20200609 的未定义引用::网络::网络()

上下文

你好,我正在尝试使用 OpenCV DNN (OpenCV 4.4.0) 模块加载一些模型,以便作为更大项目的一部分来做一些 classification/segmentation。 为此,我使用 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: error: undefined reference to `cv::dnn::dnn4_v20200609::Net: :Net() 这正在调用 cv::dnn::Net net; 使用或不使用命名空间。

我注意到在文件 /usr/local/include/opencv4/opencv2/dnn/version.hpp 中有一个标志 #define OPENCV_DNN_API_VERSION 20200609 对应于网络 class 可以找到,但我不知道这会把我带到哪里。

我对 Qmake 和 OpenCV 没有太多经验,所以这可能是一个简单的修复,但我希望得到一些帮助。谢谢!

对于那些面临同样问题的人,我设法正确安装它并使用 Cmake GUI 在 QtCreator 中使用它并检查所有正确的标志。我认为这是关于 OpenCV-contrib 模块的安装错误。 link 是标记正确标志的好教程: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*&) 的奇怪错误只是由于调用 print(...) 而不是 printfcout.