当我在 opencv 3.1.0 中包含 dnn 模块时出现链接错误

Linking error when I include dnn module in opencv 3.1.0

本文关键字:模块 dnn 错误 链接 包含 opencv      更新时间:2023-10-16

我尝试使用 Opencv 3.1.0 的 dnn 模块进行一些对象检测,我在这里遵循教程:Opencv dnn 模块教程

据我了解,包含 dnn 模块的额外模块应该使用 Opencv 源代码构建。所以我遵循本教程:使用额外模块构建Opencv。

但是,当我尝试在 Visual Studio 2013 Microsoft中编译此简单代码时,

#include <opencv2dnn.hpp>
#include <opencv2core.hpp>
using namespace cv;
using namespace cv::dnn;
void main() {
}

1>------ 重建全部开始:项目:WithDnn模块,配置:调试Win32------ 1> DNN测试.cpp 1>DnnTest.obj : 错误 LNK2019: 未解析的外部符号 "private: void __thiscall cv::String::d eallocate(void(" (?deallocate@String@cv@@AAEXXZ( 在函数 "public: __thiscall cv::String::~String(void(" (??1String@cv@@QAE@XZ( 1>C:\Rescourse\Project\opencvdnn\WithDnnModule\Debug\WithDnnModule.exe:致命错误LNK1120:1 个未解析的外部 =

========== 全部重建:0 成功,1 失败,0 跳过 ==========

如果我不包含 opencv2\dnn.hpp,我可以成功构建代码。

请帮帮我。

我有一个非常相似的问题。事实证明,我试图链接到x64 opencv lib/dll,但我的项目设置为x86。

尝试在计算机上的自定义目录中使用本教程安装 OpenCV 3.10。如果您安装了任何其他OpenCV实例,这并不重要。

我想你会把它安装在/home/ubuntu/opencv310

对于安装,您应该通过放置 contrib 目录 somwhere 来运行以下命令,如下所示/home/ubuntu/opencv_contrib

ccmake -DCMAKE_INSTALL_PREFIX=/home/ubuntu/opencv310 -DWITH_CUDA=ON  -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DOPENCV_EXTRA_MODULES_PATH=/home/ubuntu/opencv_contrib/modules ..

您将运行此示例:

g++ -I/home/ubuntu/opencv310/include -L/home/ubuntu/opencv310/lib  caffe.cpp  -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc  -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_photo -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto -lopencv_dnn -o caffe

现在您可以使用 ./caffe .

您没有包含正确的库。这包括将为您提供所有OpenCV库:

包括"OpenCV2/OpenCV.hpp">