有兩種方法你可以用OpenCV依賴開發應用程序。
首先,要求用戶從Play商店下載OpenCV管理器(異步初始化)。
其次是靜態初始化。
讓我首先解釋靜態初始化。在靜態初始化中,將庫包含在項目中。這意味着,無論用戶需要什麼庫,您都會將其與您的應用程序打包在一起。您可以通過簡單執行此步驟來完成此操作。 1)如果您的應用程序項目沒有JNI部分,只需將相應的OpenCV本機庫從/ sdk/native/libs /複製到您的項目目錄到文件夾libs /。 2)如果應用程序項目帶有JNI部分,而不是手動庫複製,則需要修改您的Android.mk文件:在「include $(CLEAR_VARS)」之後並在「包含$(CLEAR_VARS)」之後添加以下兩行代碼行,包括path_to_OpenCV-2.4.9-Android的SDK/SDK /本地/ JNI/OpenCV.mk」
對於完整的指令,你可以在http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html
第二種方式看,是加載在運行時庫。該庫將由OpenCV提供的稱爲OpenCV Manager的外部應用程序加載。的代碼片段如下[也從http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html]採取:
public class Sample1Java extends Activity implements CvCameraViewListener {
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
@Override
public void onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
}
...
}
線路使用的OpenCV經理OpenCVLoader.initAsync將異步加載庫。如果未安裝,用戶將被重定向到Play商店。
異步初始化是那些編寫OpenCV指南的人推薦的方式,因此您不需要爲每個體系結構包含庫並且庫也將被更新。它有點打破了用戶體驗;程序的流程。
無論如何,只要記住,在異步初始化中,只有在加載庫後才能使用與OpenCV相關的任何代碼,從而在您收到SUCCESS狀態之後。所以,相應地設計你的應用程序