未定义的对`cvCreateBGCodeBookModel'

时间:2015-06-02 07:53:04

标签: c++ linux opencv

我在编译C ++代码时遇到错误消息。

$g++ basic100.cpp -o test -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect
/tmp/ccWqj7E2.o: In function `main':
basic100.cpp:(.text+0x67): undefined reference to `cvCreateBGCodeBookModel'
basic100.cpp:(.text+0x2c6): undefined reference to `cvBGCodeBookUpdate'
basic100.cpp:(.text+0x31d): undefined reference to `cvBGCodeBookClearStale'
basic100.cpp:(.text+0x374): undefined reference to `cvBGCodeBookDiff'
basic100.cpp:(.text+0x3c8): undefined reference to `cvSegmentFGMask'
collect2: error: ld returned 1 exit status

该代码在我朋友的笔记本电脑上运行良好。 我的系统是32位Linux Mint,而它们有64位Ubuntu 14.04。

我朋友的笔记本电脑中使用的编译命令 $ g ++ -o fff basic100.cpp pkg-config --cflags --libs opencv

这就是我使用cvCreateBGCodeBoolModel()

的方法
(model definition :CvBGCodeBookModel* model = 0;//outside main())

    model = cvCreateBGCodeBookModel();

2 个答案:

答案 0 :(得分:1)

当我运行命令

grep cvCreateBGCodeBookModel /usr/lib/x86_64-linux-gnu/libopencv_*.so

我得到了结果

Binary file /usr/lib/x86_64-linux-gnu/libopencv_legacy.so matches

所以我假设你错过了编译中的-lopencv_legacy标志。但我有一个64位系统。

你能检查一下是否有效吗?

答案 1 :(得分:0)

可能你缺少一些头文件。自己制作代码簿结构。使用opencv 3.0你的代码不会工作,因为你必须使用BackgrundSubtractorMOG类