我正在尝试通过Eclipse CDT使用OpenCV 3 hog和svm编译我自己的对象检测器,但在编译控制台时返回以下内容:
Building target: HogDetection
Invoking: GCC C++ Linker
g++ -L/usr/local/lib -o "HogDetection" ./main.o ./phog.o ./psvm.o -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_ml
./phog.o: In function `cv::HOGDescriptor::HOGDescriptor()':
/usr/local/include/opencv2/objdetect.hpp:348: undefined reference to `vtable for cv::HOGDescriptor'
./phog.o: In function `cv::HOGDescriptor::~HOGDescriptor()':
/usr/local/include/opencv2/objdetect.hpp:372: undefined reference to `vtable for cv::HOGDescriptor'
collect2: error: ld returned 1 exit status
make: *** [HogDetection] Error 1
可能我在库上做错了什么,但由于我是 c++ 和 OpenCV 的新手,我按照教程使用 openCV 设置 eclipse CDT,并且我能够运行其他简单的教程(那些在 openCV 网站上,如显示图像等......
我还在维基百科上阅读了一些关于vtable和这里的东西,但这还不足以让我了解这里发生的事情。提前谢谢。
我通过将库添加到 gcc c++ 链接器库来解决问题opencv_objdetect
如果您正在使用制作文件,那么只需添加
LIBS += -L/usr/local/libs \ -lopencv_objdetect \
或者如果你没有makefile,那么只需运行这样的
代码g++ -Wall main.cpp/usr/lib/libopencv_objdetect.a -o main