0

在过去的几天里,我一直在使用以下命令成功编译和链接 opencv 代码:

g++ motion.cpp -o motion `pkg-config --cflags --libs opencv`

但我最近添加了对该pyrUp()函数的调用:

pyrUp( in, out, Size( 640,480 ) );

现在,当我编译时,出现以下链接器错误:

motion.cpp:(.text+0x1385): undefined reference to `cv::pyrUp(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int> const&, int)'
collect2: ld returned 1 exit status

我错过了什么?我应该使用其他功能吗?我以为我已经链接了所有的 opencv 库。

4

2 回答 2

0

据我了解,pkg-config(REF)从此处加载一个配置文件 /usr/local/lib/pkgconfig/opencv.pc ,其中包含许多设置。

您可能必须将包含 pyrup 的特定库添加到此行的末尾

Libs: -L${libdir} -lopencv_core -lopencv_imgproc -lopencv_highgui
-lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann

opencv.pc 文件也可能位于与上面列出的文件夹不同的文件夹中。

也可能是您使用的 openCV 版本没有预编译库。在这种情况下,您必须为此函数添加 .cpp 文件的源代码作为参数。我实际上不确定如何执行此操作,因为我使用的是 ID 而不是命令行。

于 2013-07-24T10:03:58.363 回答
0

我错过了什么?

您将库放在链接行的开头,这是错误的。而是将它们移到最后。

于 2013-07-25T05:08:05.743 回答