2014-09-06 29 views
0

我正在閱讀使用OpenCV for Android應用程序,並且我不確定這些庫是否在啓動時連接到應用程序本身,或者是否必須爲每個用戶下載openCV庫。如果您使用OpenCV4Android構建應用程序,您的用戶是否需要下載openCV管理器/庫?

這是我應該考慮的事情嗎?我應該使用另一種方法,還是我完全誤解這篇文章:http://www.embedded.com/design/programming-languages-and-tools/4406164/2/Developing-OpenCV-computer-vision-apps-for-the-Android-platform

回答

0

動態鏈接OpenCV庫到你的應用程序是這樣,每當有它會自動將庫的新更新的OpenCV 開發的最佳實踐在你更新後的應用也

但是,如果你不來,你希望有一個固定的OpenCV庫,你可以做到這一點,但它是不贊成的方法再檢查一下這一步一步的指導OpenCV4Android

0

有兩種方法你可以用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狀態之後。所以,相應地設計你的應用程序

相關問題