Cómo ejecutar código OpenCV sin OpenCv Manager

Estoy utilizando OpenCV4Android versión 2.4.10 y probar mi código en Samsung Galayx GT-I9300. El problema que tengo es, que debo descargar Opencv Manager de la tienda de juegos para que mi código abierto se ejecuta, de lo contrario la aplicación no se inicia. Me referí a algunos puestos ", como se muestra aquí Cómo integrar OpenCV Manager en Android App " para saber cómo puedo ejecutar el código opncv en android sin la necesidad de descargar el administrador de OpenCV, pero lamentablemente la aplicación no empieza mientras OpenCV Manager no está instalado .

Yo intenté el follwoing

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); } } 

Pero eso no solucionó el problema. Por favor, hágamelo saber cómo ejecutar código opencv en android sin descargar Opencv Manager?

Actualización :

Uso de initAsync :

¿Podría dar un ejemplo de cómo utilizar "initAsync ()" en la versión de producción de la aplicación? Porque intenté hacerlo, pero por supuesto no puedo usarlo en el bloque estático porque la firma de "intiAsync" es la siguiente: "OpenCVLoader.initAsync (OpenCVLoader.OPENCV_VERSION_2_4_10, this, mLoaderCallback);" Y no puedo utilizar "esta" palabra clave ni una referencia a la devolución de llamada "mLoaderCallback" dentro del bloque estático

 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()); } } 

2 Solutions collect form web for “Cómo ejecutar código OpenCV sin OpenCv Manager”

Como desea procedimiento paso a paso, Así que empezaría con la creación de un proyecto de SampleOpenCV desde cero, y también sugeriría hacer los siguientes pasos en un nuevo proyecto, Una vez que comience a trabajar puede intentar migrar los cambios a su proyecto principal.

  1. Descargar el paquete OpenCV para android de Opencv.org [ Direct Download Link V3.1 ]
  2. Abra el proyecto SampleOpenCV en Android Studio y, a continuación, Archivo -> Nuevo -> Módulo de importación , que abriría una nueva ventana emergente para ingresar a la ruta del módulo, seleccione {unzipped_opencv}/sdk/java , Esto crearía un directorio SampleOpenCV bajo SampleOpenCV .
  3. Ahora abra SampleOpenCV/OpenCVLibrary310/build.gradle y copie los siguientes campos de SampleOpenCV/app/build.gradle :
    • CompileSdkVersion
    • BuildToolsVersion
    • MinSdkVersion
    • TargetSdkVersion
  4. Ahora haga clic derecho en su proyecto SampleOpenCV y haga clic en Open Module Srttings , busque la Modules >> app y seleccione Dependencies

Introduzca aquí la descripción de la imagen

  1. Haga clic en el signo + de la parte superior derecha, en la ventana emergente y seleccione 3 Dependencia del módulo . Ahora elige OpencvLibrary310 . Cierre la ventana emergente y deje que la sincronización gradle.

  2. Copie la carpeta libs {unzipped_opencv} / sdk / native / libs en Android Studio bajo app / src / main y cambie el nombre a jniLibs ( jniLibs el caso aquí).

  3. Estás listo.

 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); } } 

NOTA : OpenCVLoader.initDebug() debe utilizar para fines de depuración sólo como cuando se está desarrollando localmente en su equipo. Pero para propósitos de producción en los que necesita liberar la aplicación en Play Store, etc. debe utilizar OpenCVLoader.initAsync() . En realidad, la inicialización de OpenCVLoader lleva algún tiempo dependiendo del teléfono. Así que si lo carga uisng initDebug() , entonces sería ejecutado en el hilo principal, que puede bloquear la interfaz de usuario durante un tiempo fraccionario. Por lo tanto, se aconseja cargar el OpenCV en segundo plano que se puede lograr usando initAsync()

Hay un código de ejemplo disponible en GitHub que utiliza el método initAsync () y resuelve el problema de la dependencia del administrador de Opencv Ejemplo para integrar NDK y eliminar la dependencia de Opencv

  • Explorador de documentos Android con opencv
  • OpenGL ES 2 no funciona en Android API23
  • No se encontró el paquete de la biblioteca OpenCV
  • OpenCV se bloquea después de un corto período de tiempo en la aplicación para Android
  • Cómo detectar los límites de una página de pasaporte con OpenCV?
  • ¿Se puede utilizar un android.hardware.camera2.CaptureRequest con OpenCV?
  • Cómo configurar la cámara de OpenCV para mostrar la vista previa tanto en orientación vertical como en pantalla completa
  • ¿Es posible hacer zoom y enfocar usando OpenCV en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.