Android, genera archivos de encabezado jni con javah, muestra error que no puede encontrar org.opencv.core.Mat

Sólo tengo un problema molesto con jni cuando compilar el método nativo en la clase java con javah para generar archivos de encabezado JNI.

Si la clase ha utilizado un paquete de terceros, Por ejemplo: org.opencv.core.Mat, entonces el javah mostrará el error que no puede encontrar la clase org.opencv.core.Mat.

El código de ejemplo de OpenCV como se muestra a continuación:

 package org.opencv.samples.fd; import org.opencv.core.Mat; import org.opencv.core.MatOfRect; public class DetectionBasedTracker { public DetectionBasedTracker(String cascadeName, int minFaceSize) { mNativeObj = nativeCreateObject(cascadeName, minFaceSize); } public void start() { nativeStart(mNativeObj); } public void stop() { nativeStop(mNativeObj); } public void setMinFaceSize(int size) { nativeSetFaceSize(mNativeObj, size); } public void detect(Mat imageGray, MatOfRect faces) { nativeDetect(mNativeObj, imageGray.getNativeObjAddr(), faces.getNativeObjAddr()); } public void release() { nativeDestroyObject(mNativeObj); mNativeObj = 0; } private long mNativeObj = 0; private static native long nativeCreateObject(String cascadeName, int minFaceSize); private static native void nativeDestroyObject(long thiz); private static native void nativeStart(long thiz); private static native void nativeStop(long thiz); private static native void nativeSetFaceSize(long thiz, int size); private static native void nativeDetect(long thiz, long inputImage, long faces); } 

Primero, utilicé el comando

 javah -classpath bin/classes -bootclasspath (the directory of android.jar) -d jni (packageName + ClassName) , shows the error "can't find the org.opencv.core.Mat 

Entonces modifiqué el comando para

 javah - classpath bin/classes - bootclasspath (the dir of android.jar) ; (the dir of the opencv lib jar) -d jni ..." ", this time it shows error 

Excepción

 Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: E:\Computer_Language\Java\soft_android\OpenCV-2.4.3-rc-android-sdk\OpenCV -2.4.3-rc-android-sdk\sdk\java\bin\opencv library - 2.4.3.jar at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:177) at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:68) at com.sun.tools.javah.JavahTask.run(JavahTask.java:509) at com.sun.tools.javah.JavahTask.run(JavahTask.java:335) at com.sun.tools.javah.Main.main(Main.java:46) 

Creo que agregar el directorio de opencv lib en -bootclasspath es útil y necesario. El error es porque acabo de agregar dos camino en -bootclasspath o el formato es algo malo?

Realmente confundido. ¡Por favor dé una cierta ayuda, gracias u!

Esto es lo que hice:

1.Open La línea de comandos, escriba a (proyecto) / bin / classes: 2.type: javah -classpath (vía de acceso sdk de opencv4android) / java / bin / classes: (su ubicación del proyecto) / bin / classes -jni (your java Class que contiene las interfaces nativas de la biblioteca)

En mi proyecto. Yo si:

Javah -classpath / home / zijun / Dev / adt / OpencvAndroid / sdk / java / bin / classes: / home / zijun / espacio de trabajo / LocTM / bin / classes -jni com.brainport.loctm.TMatching

Que funciona en Linux Ubuntu 12.04.02 64bit OS

Me encontré con el mismo problema también, me costó medio día. Sólo copiar DetectionBasedTracker.java a mi poject.I utilizar Android Studio.When uso ExternalTools> javah para generar archivos .h, la consola de impresión no puede encontrar org.opencv.core .Mat.copying mat.java y matofRect.java al directorio DetectionBasedTracker.java existe sólo causa más java clase no puede ser find.finally, encuentro que este problema fue causado por la cláusula de importación * en java file.and rara vez usamos java class En el método nativo que definimos. Así que cortar estos métodos java y obtuvo esto:

 package cn.ntu.tonguefur.nativemethod; public class DetectionBasedTracker{ private static native long nativeCreateObject(String cascadeName,int minFaceSize); //Other native methods private static native void nativeDetect(long thiz,long inputImage,long faces); } 

Ahora puede utilizar libremente el comando javah para generar el archivo .h. Después de eso, agregue los métodos java y los paquetes de importación que necesita.

  • Parece que su dispositivo no es compatible con la cámara (o está bloqueado)
  • OpenCV para Android: Error al cargar el error del clasificador en cascada
  • Cómo obtener MJPG stream video de android IPWebcam using opencv
  • ¿Cómo instalar OpenCV Manager en un emulador?
  • Eclipse se compila con éxito, pero todavía da errores semánticos
  • Android JavaCV dilema, NoClassDefFoundError lanzado dentro del método 'dibujar' cuando se crea IplImage
  • Mejora del rendimiento de OpenCV Android: seguimiento rápido de objetos
  • OpenCV de Android: No se encontró identificador de recurso para el atributo 'camera_id' en el paquete
  • Método eficaz para convertir un archivo de imagen de RGB a YUV
  • Cómo hacer tostadas de otro hilo (sans runOnUiThread)
  • Android: Grabación y transmisión simultánea
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.