过去几天,我一直在使用以下命令成功编译和链接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库中链接了。
答案 0 :(得分:0)
据我了解,pkg-config(REF)从这里加载一个配置文件/usr/local/lib/pkgconfig/opencv.pc,其中包含许多设置。
您可能必须将包含pyrup的特定lib添加到此行的末尾
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而不是命令行。
答案 1 :(得分:0)
我错过了什么?
您将库放在链接行的开头,即wrong。将它们移到最后。