我试图通过在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和这里的内容,但这还不足以让我理解这里发生了什么。 提前谢谢。
答案 0 :(得分:1)
我通过向gcc c ++链接库添加库opencv_objdetect
答案 1 :(得分:1)
如果您正在使用make文件,那么只需添加
LIBS + = -L / usr / local / libs \
- lopencv_objdetect \
或者如果您没有makefile,那么只需运行类似的代码 g ++ -Wall main.cpp /usr/lib/libopencv_objdetect.a -o main