在opencv 3.1.0中包含dnn模块时链接错误

时间:2016-01-31 02:10:12

标签: c++ opencv visual-studio-2013

我尝试使用Opencv 3.1.0的dnn模块进行一些对象检测,我在这里按照教程进行操作:Opencv dnn module tutorial

根据我的理解,包含dnn模块的额外模块应该使用Opencv源构建。所以我遵循本教程:Build Opencv with Extra Modules

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

#include <opencv2\dnn.hpp>
#include <opencv2\core.hpp>
using namespace cv;
using namespace cv::dnn;

void main() {

}
  

1&gt; ------ Rebuild All started:Project:WithDnnModule,Configuration:Debug Win32 ------   1 GT; DnnTest.cpp   1&gt; DnnTest.obj:错误LNK2019:未解析的外部符号“private:void __thiscall cv :: String :: deallocate(void)”(?deallocate @ String @ cv @@ AAEXXZ)在函数“public:__thiscall cv :: String”中引用::〜String(void)“(?? 1String @ cv @@ QAE @ XZ)   1&gt; C:\ Rescourse \ Project \ opencvdnn \ WithDnnModule \ Debug \ WithDnnModule.exe:致命错误LNK1120:1未解析的外部   ==========重建全部:0成功,1失败,0跳过==========

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

请帮帮我。

3 个答案:

答案 0 :(得分:1)

我有一个非常类似的问题。原来我试图链接x64 opencv lib / dll,但我的项目设置为x86。

答案 1 :(得分:0)

尝试使用this tutorial在计算机上的自定义目录中安装OpenCV 3.10。如果您安装了任何其他OpenCV实例,则无关紧要。

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

对于安装,您应该通过将contrib目录放在像/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 ..

您将运行this example

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运行它。

答案 2 :(得分:0)

您没有包括正确的库。 其中包括所有OpenCV库:

包括“ opencv2 / opencv.hpp”