para - opencv android studio documentation
Usando opencv FileStorage native en android (1)
Estoy tratando de escribir una aplicación para Android que calcula los puntos clave y las descripciones usando opencv y los almacena. Sin embargo, estoy teniendo problemas con cv: FileStorage. En realidad estoy pasando la ruta del archivo arrojar métodos nativos. La misma ruta (finalización de archivo diferente) también se usa para almacenar otro archivo en javaside.
JNIEXPORT void JNICALL Java_com_..._CalcFeatures(JNIEnv* env, jobject, jlong addrGray, jstring location){
...
const char *nativeString = env->GetStringUTFChars(location, NULL);
string filepath=string(nativeString);
FileStorage fs(filepath, FileStorage::WRITE);
fs<<"frameCount"<<5;
fs.release();
...
}
Salida LogCat:
Fatal signal 11 (SIGSEGV) at 0x000009f4 (code=19), thread 23789
También intenté hardcode la ruta (como "/sdcard/test.xml" o "/storage/emulated/0/text.xml"). Si utilizo "test.xml" como ruta de archivo, no obtengo ningún error, pero no puedo encontrar el archivo en mi teléfono (HTC One).
¿Algún consejo?
Gracias por tu tiempo.
ACTUALIZAR:
esto funciona bien, entonces hay un problema con FileStorage. ¿Hay alguna otra forma en opencv para analizarlo en un formato xml / json? quizás con una cuerda como resultado?
FILE* file = fopen(nativeString,"w+");
fputs("hello, world/n", file);
fclose(file);
He hecho una pregunta similar aquí: imread devuelve la matriz vacía, mientras que ifstream puede abrir y leer el mismo archivo y descubrí que incluso si puedo manipular el archivo desde la parte nativa, no puedo usar FileStorage de opencv.
Y es por eso que no puedo cargar matriz, clasificador en cascada, etc.
También intenté cargar datos de un archivo a la memoria y crear FileStorage desde la memoria, que se creó para escribir, pero no funciona (mientras funciona perfectamente en Windows). No puedo acceder a ningún nodo.