So führen Sie OpenCV-Code ohne OpenCv Manager aus

Ich benutze OpenCV4Android Version 2.4.10 und ich teste meinen Code auf Samsung Galayx GT-I9300. Das Problem habe ich, dass ich den Opencv Manager aus dem Play Store herunterladen muss, damit mein opencv Code läuft, sonst würde die App nicht starten. Ich habe auf einige Postings "wie gezeigt hier Wie integriere ich OpenCV Manager in Android App " zu wissen, wie kann ich den Opncv-Code auf Android, ohne die Notwendigkeit, OpenCV-Manager herunterladen, aber leider die App nicht starten, solange OpenCV-Manager nicht installiert ist .

Ich habe versucht,

  • AppCompat unterstützt nicht die aktuellen Themenfunktionen - nichts funktioniert
  • Wie kann man die Fragmentorientierung verriegeln?
  • Getting Error "Gradle DSL-Methode nicht gefunden: 'compile ()'" beim Synchronisieren von Build.Gradle
  • Android, Route auf Google Map zu zeichnen
  • Android google signin und facebook login button sehen ganz anders aus
  • Unterschied zwischen den Konzepten
  • static { if (!OpenCVLoader.initDebug()) { // Handle initialization error } } 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(); Log.w(TAG, "onResume"); if (!OpenCVLoader.initDebug()) { Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_10, getActivity(), mLoaderCallback); } else { Log.d(TAG, "OpenCV library found inside package. Using it!"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } } 

    Aber das hat das Problem nicht gelöst. Bitte lassen Sie mich wissen, wie man opencv Code auf Android ohne Download Opencv Manager laufen?

    Update :

    Verwendung von initAsync :

    Möchten Sie bitte ein Beispiel geben, wie man "initAsync ()" in der Produktionsversion der App verwendet? Weil ich versuchte, es zu tun, aber natürlich kann ich es nicht im statischen Block verwenden, da die Signatur von "intiAsync" wie folgt ist "OpenCVLoader.initAsync (OpenCVLoader.OPENCV_VERSION_2_4_10, this, mLoaderCallback);" Und ich kann nicht "dieses" Schlüsselwort noch einen Hinweis auf den Rückruf "mLoaderCallback" innerhalb des statischen Blocks verwenden

     public class MainActivity extends AppCompatActivity { static { //OpenCVLoader.initDebug(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_10, this, mLoaderCallback); //this keyword and "mLoaderCallback" are not defined in this scope } private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i("MainActivity", "OpenCV loaded successfully"); } break; default: { super.onManagerConnected(status); } break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Mat m = new Mat(100, 100, CvType.CV_8UC4); Log.d("MainActivity", "m.width()" + m.width()); Log.d("MainActivity", "m.height()" + m.height()); } } 

  • Deaktivieren Sie das Scrollen in der Listenansicht
  • JavaScript-Benachrichtigung funktioniert nicht in Android WebView
  • Root-Berechtigungen für eine Android-Anwendung (Komplette App nicht nur wenige Befehle)
  • Gibt es eine einfache Möglichkeit, meine Apfel-Apps in Android-Apps zu konvertieren?
  • Android - Google Spiel wie Tabs
  • Gefangen eine RuntimeException aus der Binder Stub-Implementierung
  • 2 Solutions collect form web for “So führen Sie OpenCV-Code ohne OpenCv Manager aus”

    Wie Sie Schritt für Schritt Vorgehensweise wollen, so würde ich mit dem Erstellen eines SampleOpenCV Projekts von Grund auf beginnen und würde auch vorschlagen, die folgenden Schritte in einem neuen Projekt zu machen. Sobald es funktioniert, können Sie versuchen, die Änderungen an Ihrem Hauptprojekt zu migrieren.

    1. Download OpenCV Paket für Android von Opencv.org [ Direct Download Link V3.1 ]
    2. Entpacken Sie den Reißverschluss an einen Ort Ihrer Wahl, öffnen Sie das SampleOpenCV Projekt in Android Studio, dann Datei -> Neu -> Import Modul , das ein neues Popup öffnen würde, um den {unzipped_opencv}/sdk/java , wählen Sie {unzipped_opencv}/sdk/java , Würde dies ein OpenCVLibrary310 Verzeichnis unter SampleOpenCV .
    3. Öffnen SampleOpenCV/OpenCVLibrary310/build.gradle nun SampleOpenCV/OpenCVLibrary310/build.gradle und kopieren Sie die folgenden Felder aus SampleOpenCV/app/build.gradle :
      • CompileSdkVersion
      • BuildToolsVersion
      • MinSdkVersion
      • TargetSdkVersion
    4. Klicken Sie nun mit der rechten SampleOpenCV auf Ihr SampleOpenCV Projekt und klicken Sie auf SampleOpenCV öffnen , suchen Sie nach Modules >> app und wählen Sie Abhängigkeiten aus

    Bildbeschreibung hier eingeben

    1. Klicken Sie im Pop-Fenster auf das obere rechts-Zeichen und wählen Sie 3 Modulabhängigkeit . Wählen OpencvLibrary310 nun OpencvLibrary310 . Schließen Sie das Pop-up und lassen Sie die gradle sync.

    2. Kopiere den libs-Ordner {unzipped_opencv} / sdk / native / libs auf Android Studio unter App / src / main und jniLibs von ihm zu jniLibs (Mind the case here).

    3. Du bist fertig.

     public class MainActivity extends AppCompatActivity { static { OpenCVLoader.initDebug(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Mat m = new Mat(100, 100, CvType.CV_8UC4); } } 

    OpenCVLoader.initDebug() : OpenCVLoader.initDebug() muss nur zum Debuggen verwendet werden, wenn Sie sich lokal auf Ihrem Computer entwickeln. Aber für Produktionszwecke, wo Sie die App auf Play Store etc. OpenCVLoader.initAsync() müssen, müssen Sie OpenCVLoader.initAsync() . Die Initialisierung des OpenCVLoaders dauert je nach Telefon. Also, wenn Sie es uisng initDebug() laden, dann würde es im Haupt-Thread ausgeführt werden, die die Benutzeroberfläche für eine Bruchzeit blockieren kann. Es empfiehlt sich daher, das OpenCV im Hintergrund zu laden, das mit initAsync()

    Es gibt einen Beispielcode, der auf GitHub verfügbar ist, der die initAsync () – Methode verwendet und das Problem der Opencv-Manager-Abhängigkeit auflöst. Beispiel, um NDK zu integrieren und die Opencv-Abhängigkeit zu entfernen

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.