Quiero usar la biblioteca OpenCV en mi aplicación con Android Studio. Seguí las instrucciones encontradas aquí pero recibo un error
Configuración con el nombre 'predeterminado' no encontrado
¿Qué puede estar mal?
Yo uso Android Studio 1.0 con gradle 2.2.1.
android
opencv
android-studio
gradle
Bartosz Bialecki
fuente
fuente
native
directorio en misdk
directorio. ¿Me estoy perdiendo algo?Respuestas:
Los siguientes pasos para usar Android OpenCV sdk en Android Studio. Esta es una versión simplificada de esta ( 1 ) respuesta SO.
El paso (6) se debe a que Android Studio espera bibliotecas nativas en
app/src/main/jniLibs
lugar de unalibs
carpeta anterior . Para aquellos nuevos en Android OpenCV, no se pierdan los siguientes pasosstatic{ System.loadLibrary("opencv_java"); }
(Nota: para OpenCV versión 3 en este paso, debería cargar la bibliotecaopencv_java3
).OpenCV escrito está en C / C ++. Los contenedores Java son
fuente
javadocs
directorio? También me está pidiendo que lo instale,android sdk 14
aunque estoy apuntando a dispositivos compatiblesandroid sdk 15
sdk
directorio de instalación en mi sistema mientras estabas hablando del directorio que viene conAndroid Open CV SDK
.Ok completó el paso 6. ¿Dónde incluyostatic{ System.loadLibrary("opencv_java"); }
?android-14
error después de importar el módulo en el paso 2, debe editarlo manualmentebuild.gradle
en el directorio de openCV en su proyecto como se muestra en el paso 3.Integrando OpenCV v3.1.0 en Android Studio v1.4.1 , instrucciones con detalles adicionales y capturas de pantalla del tipo esto es lo que debería obtener.
La mayor parte del crédito va a Kiran, Kool, 1 "y SteveLiles en opencv.org por sus explicaciones. Estoy agregando esta respuesta porque creo que la interfaz de Android Studio ahora es lo suficientemente estable como para trabajar en este tipo de integración. También tengo que escribir estas instrucciones de todos modos para nuestro proyecto.
Los desarrolladores AS experimentados encontrarán algo de esto pedante. Esta respuesta está dirigida a personas con experiencia limitada en Android Studio.
Cree un nuevo proyecto de Android Studio utilizando el asistente de proyectos (Menú: / Archivo / Nuevo proyecto):
Actividad en blanco llamada MainActivity
Debe tener un directorio cvtest1 donde se almacena este proyecto. (la barra de título de Android Studio te muestra dónde está cvtest1 cuando abres el proyecto)
Verifique que su aplicación se ejecute correctamente. Intente cambiar algo como el texto "Hola Mundo" para confirmar que el ciclo de compilación / prueba está bien para usted. (Estoy probando con un emulador de un dispositivo API 19).
Descargue el paquete OpenCV para Android v3.1.0 y descomprímalo en algún directorio temporal en alguna parte. (Asegúrese de que sea el paquete específicamente para Android y no solo el paquete OpenCV para Java). Llamaré a este directorio " unzip-dir " Debajo de unzip-dir debería tener un directorio sdk / native / libs con subdirectorios que comienzan con cosas como arm ..., mips ... y x86 ... (una para cada tipo de "arquitectura" en la que se ejecuta Android)
Desde Android Studio, importe OpenCV en su proyecto como módulo: Menú: / Archivo / Nuevo / Importar_Módulo :
Haga clic en siguiente . Obtiene una pantalla con tres casillas de verificación y preguntas sobre frascos, bibliotecas y opciones de importación. Los tres deben ser revisados. Haz clic en Finalizar.
Android Studio comienza a importar el módulo y se le muestra un archivo import-summary.txt que tiene una lista de lo que no se importó (principalmente archivos javadoc) y otros datos.
Pero también se obtiene un mensaje de error que dice que no pudo encontrar destino con la cadena de hash 'android-14' ... . Esto sucede porque el archivo build.gradle en el archivo zip de OpenCV que descargaste dice que se compila usando la versión 14 de la API de Android, que por defecto no tienes con Android Studio v1.4.1.
Abra el diálogo de estructura del proyecto ( Menú: / Archivo / Estructura_proyecto ). Seleccione el módulo "aplicación", haga clic en la pestaña Dependencias y agregue : openCVLibrary310 como una dependencia del módulo. Cuando selecciona Agregar / Módulo_Dependencia , debería aparecer en la lista de módulos que puede agregar. Ahora se mostrará como una dependencia, pero obtendrá algunos errores más de no se puede encontrar-android-14 en el registro de eventos.
Busque en el archivo build.gradle el módulo de su aplicación. Hay varios archivos build.gradle en un proyecto de Android. El que desea está en el directorio cvtest1 / app y desde la vista del proyecto se ve como build.gradle (Módulo: aplicación) . Tenga en cuenta los valores de estos cuatro campos:
Su proyecto ahora tiene un directorio cvtest1 / OpenCVLibrary310 pero no es visible desde la vista del proyecto:
Use alguna otra herramienta, como cualquier administrador de archivos, y vaya a este directorio. También puede cambiar la vista del proyecto de Android a Archivos de proyecto y puede encontrar este directorio como se muestra en esta captura de pantalla:
Dentro hay otro archivo build.gradle (está resaltado en la captura de pantalla anterior). Actualice este archivo con los cuatro valores del paso 6.
Vuelva a sincronizar su proyecto y luego limpie / reconstruya. (Menú: / Build / Clean_Project ) Debería limpiar y construir sin errores y debería ver muchas referencias a : openCVLibrary310 en la pantalla 0: Mensajes .
En este punto, el módulo debería aparecer en la jerarquía del proyecto como openCVLibrary310 , al igual que la aplicación . (Tenga en cuenta que en ese pequeño menú desplegable cambié de Vista de proyecto a Vista de Android ). También debería ver un archivo build.gradle adicional en "Gradle Scripts", pero la interfaz de Android Studio me parece un poco problemática y, a veces, no lo hace de inmediato. Por lo tanto, intente resincronizar, limpiar e incluso reiniciar Android Studio.
Debería ver el módulo openCVLibrary310 con todas las funciones de OpenCV en Java como en esta captura de pantalla:
Copie el directorio {unzip-dir} / sdk / native / libs (y todo lo que está debajo) en su proyecto de Android, a cvtest1 / OpenCVLibrary310 / src / main / , y luego cambie el nombre de su copia de libs a jniLibs . Ahora debería tener un cvtest1 / OpenCVLibrary310 / src / main / jniLibs . Vuelva a sincronizar su proyecto y este directorio debería aparecer ahora en la vista del proyecto en openCVLibrary310 .
Vaya al método onCreate de MainActivity.java y agregue este código:
Luego ejecuta tu aplicación. Debería ver líneas como esta en el monitor de Android: (No sé por qué esa línea con el mensaje de error está allí)
Ahora intente usar un código openCV. En el siguiente ejemplo, copié un archivo .jpg en el directorio de caché de la aplicación cvtest1 en el emulador de Android. El siguiente código carga esta imagen, ejecuta el algoritmo de detección de bordes astutos y luego escribe los resultados en un archivo .png en el mismo directorio.
Coloque este código justo debajo del código del paso anterior y modifíquelo para que coincida con sus propios archivos / directorios.
Ejecute su aplicación Su emulador debe crear una imagen de "borde" en blanco y negro. Puede usar el Monitor de dispositivo Android para recuperar la salida o escribir una actividad para mostrarla.
Los gotchas :
fuente
OpenCV error: Cannot load info library for OpenCV
2java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/www.deven.com.opencv-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libopencv_java3.so
Lo que hice sobre este error paso a paso como lo escribiste.Para todos los que sintieron que querían huir con todos los pasos y capturas de pantalla de las respuestas anteriores (¡genial!), Esto funcionó para mí con
android studio 2.2.1
:Android Studio
, haga clicFile->New-> Import Module
y navegue y presione\path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java
Aceptar, luego acepte todos los cuadros de diálogo predeterminados.En el
gradle
archivo de suapp
módulo, agregue esto al bloque de dependencias:Donde XYZ es la versión exacta que descargas, por ejemplo en mi caso:
fuente
Android Studio 3.4 + OpenCV 4.1
Descargue el último archivo zip de OpenCV desde aquí (la versión más reciente actual es 4.1.0) y descomprímalo en su espacio de trabajo o en otra carpeta.
Cree un nuevo proyecto de Android Studio normalmente. Haga clic
File->New->Import Module
, navegue/path_to_unzipped_files/OpenCV-android-sdk/sdk/java
, establezca el Nombre del módulo comoopencv
, haga clicNext
y desmarque todas las opciones en la pantalla.Habilita
Project
el modo de visualización de archivos (el modo predeterminado esAndroid
). En elopencv/build.gradle
cambio de archivosapply plugin: 'com.android.application'
aapply plugin: 'com.android.library'
y reemplazarapplication ID "org.opencv"
con(según los valores en
app/build.gradle
). Proyecto de sincronización con archivos Gradle.Agregue esta cadena al bloque de dependencias en el
app/build.gradle
archivoSeleccione nuevamente
Android
el modo de vista de archivo. Haga clic derecho en elapp
módulo y vaya aNew->Folder->JNI Folder
. Seleccione cambiar ubicación de carpeta y establecersrc/main/jniLibs/
.Seleccione nuevamente
Project
el modo de visualización de archivos y copie todas las carpetas de/path_to_unzipped_files/OpenCV-android-sdk/sdk/native/libs
aapp/src/main/jniLibs
.Nuevamente en
Android
el modo de vista de archivo, haga clic derecho en elapp
módulo y elijaLink C++ Project with Gradle
. Seleccionar sistema de compilaciónndk-build
y ruta alOpenCV.mk
archivo/path_to_unzipped_files/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
.path_to_unzipped_files
no debe contener espacios, ¡o recibirá un error!Para verificar la inicialización de OpenCV, agregue el mensaje Toast en el
onCreate()
método MainActivity :Si la inicialización es exitosa, verá
true
en el mensaje de Toast lo que veráfalse
.fuente
application ID "org.opencv"
cadena con dos cadenas:minSdkVersion 21
ytargetSdkVersion 28
(de acuerdo con los valores en el archivo app / build.gradle)Se muestra cualquier persona que tenga problemas al crear jniLibs cpp ... solo agregue ndk ...
fuente
Esto funcionó para mí y fue tan fácil como agregar una dependencia de gradle:
https://bintray.com/seesaa/maven/opencv#
https://github.com/seesaa/opencv-android
La única advertencia es que tuve que usar un dispositivo de depuración de hardware ya que los emuladores de brazo funcionaban demasiado lento para mí (como AVD Manager dice que lo harán) y, como se describe en el archivo README, esta versión no incluye soporte x86 o x86_64.
Parece construir y la prueba sugerida:
escupe un montón de resultados que me parecen correctos.
fuente
En su build.gradle
Más información
fuente