【发布时间】:2015-05-12 10:03:09
【问题描述】:
我正在尝试在 Ubuntu 14.04 环境中编译 opencv 示例附带的 'motemple.c'。我认为 opencv 已正确安装;大多数程序都按预期运行。但是,在编译上述文件时,会为多个函数引发错误“未定义的引用”。下面是编译的输出:
Building target: ACTION_detection1
Invoking: Cross G++ Linker
g++ -L/usr/local/lib -o "ACTION_detection1" ./opencvexample/MotionSegmentation.o -lopencv_core -lopencv_photo -lopencv_videoio -lopencv_videostab -lopencv_imgcodecs -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
./opencvexample/MotionSegmentation.o: In function `update_mhi':
/media/thanuja/DTR_DATA/ACTION-TV/ACTIONDETECTION/Implementations/ACTION_detection1/Debug/../opencvexample/MotionSegmentation.cpp:103: undefined reference to `cvUpdateMotionHistory'
/media/thanuja/DTR_DATA/ACTION-TV/ACTIONDETECTION/Implementations/ACTION_detection1/Debug/../opencvexample/MotionSegmentation.cpp:105: undefined reference to `cvUpdateMotionHistory'
/media/thanuja/DTR_DATA/ACTION-TV/ACTIONDETECTION/Implementations/ACTION_detection1/Debug/../opencvexample/MotionSegmentation.cpp:114: undefined reference to `cvCalcMotionGradient'
/media/thanuja/DTR_DATA/ACTION-TV/ACTIONDETECTION/Implementations/ACTION_detection1/Debug/../opencvexample/MotionSegmentation.cpp:123: undefined reference to `cvSegmentMotion'
/media/thanuja/DTR_DATA/ACTION-TV/ACTIONDETECTION/Implementations/ACTION_detection1/Debug/../opencvexample/MotionSegmentation.cpp:149: undefined reference to `cvCalcGlobalOrientation'
collect2: error: ld returned 1 exit status
make: *** [ACTION_detection1] Error 1
可以看出,我已将所有 opencv 库链接到 mu Eclipse 项目。我还尝试了here 提供的命令行解决方案,但仍然出现相同的错误。
【问题讨论】:
-
很难说是什么问题。您“认为opencv已正确安装”是什么意思?你是怎么安装的?
-
对不起,如果术语令人困惑。我遵循了 opencv 文档和简单程序(如查看图像、播放视频和颜色增强等)中的指南,工作正常。问题似乎在于这些运动分割函数集。
-
windows 环境中也出现了同样的错误。但是添加链接器库 opencv_video 解决了这些问题。即使添加了这个库,Ubuntu 中的问题仍然存在。你知道如何解决这个问题吗?