我正在尝试在我的OpenCV本机应用程序中使用VideoCapture。至 构建我的应用程序我按照发布的说明 OpenCV2.3.1发布,所以我有一个Android.mk文件来构建我的应用程序和 eclipse中的Builder直接从eclipse中完成它。 一切正常,编译和链接其他openCV模块,但当我使用VideoCapture时,我得到一个像这样的链接错误:
SharedLibrary:liblivecamera.so C:/Development/android-opencv-wsp/VideoCamLibAndroid_v0.1/obj/local/ armeabi-v7a / libopencv_highgui.a(cap_android.o):功能正常
CvCapture_Android::convertYUV2BGR(int, int, unsigned char const*, cv::Mat&, bool, bool)': cap_android.cpp: (.text._ZN17CvCapture_Android14convertYUV2BGREiiPKhRN2cv3MatEbb *+0x1c6): undefined reference to
cv :: cvtColor(cv :: _ InputArray const&,cv :: _ OutputArray const&,int,int)'cap_android.cpp: (.text._ZN17CvCapture_Android14convertYUV2BGREiiPKhRN2cv3MatEbb + 0x1f8):未定义引用`cv :: cvtColor(cv :: _ InputArray const&,cv :: _ OutputArray const&,int,int)'collect2:ld返回1退出 状态make: * [/ cygdrive / c / Development / android-opencv-wsp / VideoCamLibAndroid_v0.1 / obj / local / armeabi-v7a / liblivecamera.so]错误 1 *
如果我使用opencv2.3.0我可以使它工作(使用CMake编译),但我真的需要使用OCV2.3.1及其新功能。
有没有人成功使用OpenCV2.3.1的VideoCapture模块?
答案 0 :(得分:2)
我遇到了完全相同的问题,在我的头撞墙几个小时后,我终于找到了解决方案!
显然,OpenCV 2.3.1提供的OpenCV.mk
中存在错误。
以下一行:
OPENCV_MODULES := contrib calib3d objdetect features2d video imgproc highgui ml legacy flann core
应替换为:
OPENCV_MODULES := contrib legacy objdetect calib3d features2d video highgui ml imgproc flann core
它看起来非常相似,但如果你看一下模块的顺序会有一点点差异。
您可以通过查看OpenCVConfig.cmake
文件来了解此更改的逻辑,该文件的状态如下:
#libraries order is very important because linker from Android NDK is one-pass linker
如果它如此重要,为什么它不包含在原OpenCV.mk
?????