2012-01-05 43 views
2

我正在嘗試在我的OpenCV本機應用程序中使用VideoCapture。到 構建我的應用程序我跟隨了與 發佈OpenCV2.3.1發佈的指令,所以我有一個Android.mk文件來構建我的應用程序和 一個生成器在eclipse中直接從eclipse來做。 一切工作正常,編譯和鏈接其它OpenCV的模塊,但是當我使用VideoCapture我得到一個鏈接錯誤是這樣的:在OpenCV2.3.1中使用VideoCapture捕獲安卓相機

SharedLibrary:liblivecamera.so C:/開發/ Android的OpenCV的-WSP/VideoCamLibAndroid_v0。 1/OBJ /本地/ 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常量&,CV :: _ OutputArray常量&,INT,INT)」 cap_android。 (cv :: _ InputArray const &,CV :: _ OutputArray常量&,INT,INT)」 collect2:LD返回1退出 狀態化妝:* [/ cygdrive/C /開發/ Android的OpenCV的-WSP/ VideoCamLibAndroid_v0.1/OBJ /本地/ armeabi-V7A/liblivecamera.so]錯誤 1 *

如果我使用opencv2.3.0我可以讓它工作(通過CMake編譯),但我真的需要使用OCV2.3.1及其新功能。

有沒有人成功使用過OpenCV2.3.1的VideoCapture模塊?

回答

2

我有完全相同的問題,並在幾個小時後撞我的頭撞牆後,我終於找到了解決方案!

顯然,OpenCV 2.3.1提供的OpenCV.mk中存在錯誤。

以下行:

OPENCV_MODULES := contrib legacy objdetect calib3d features2d video highgui ml imgproc flann core

它看起來非常相似,但有輕微的差別,如果你看一下模塊的順序:

OPENCV_MODULES := contrib calib3d objdetect features2d video imgproc highgui ml legacy flann core

應改爲。

您可以通過採取看看OpenCVConfig.cmake文件,該文件規定如下理解這種變化的邏輯: #libraries order is very important because linker from Android NDK is one-pass linker

如果它如此重要,爲什麼它不包括在原來OpenCV.mk ?????