C++ QtCreator上对opencv dnn的未定义引用
错误 无法将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文件如下所示:C++ QtCreator上对opencv dnn的未定义引用,c++,opencv,neural-network,qt-creator,C++,Opencv,Neural Network,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是使用OpenC
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时发生的代码>是否使用命名空间
我注意到在文件/usr/local/include/opencv4/opencv2/dnn/version.hpp中有一个标志#define OPENCV_dnn_API_version 20200609
,它对应于要找到Net类的dnn版本,但我不知道这会把我引向何方
我对Qmake和OpenCV没有太多的经验,所以这可能是一个简单的解决方案,但我希望能得到一些帮助。谢谢 对于那些面临同样问题的人,我成功地安装了它,并在QtCreator中使用它,使用cmakegui检查所有正确的标志。我相信这是一个关于OpenCV contrib模块的安装错误。
此链接是标记正确标志的良好教程:
另外,关于错误,我遇到了一个奇怪的错误:调用std::shared_ptr::shared_ptr(const char*&)
时没有匹配的函数,这只是因为调用了print(…)
您是否尝试在一个简单的控制台项目上运行代码而不是printf
或cout
了?是的,我尝试了使用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匹配函数调用'std::shared_ptr::shared_ptr(const char*&)
,可能是因为contrib没有正确构建,你知道我怎么检查吗?