我正在尝试编写一个 Android 应用程序,使用 opencv 计算关键点和描述符并存储它们。但是我在 cv:FileStorage 方面遇到了麻烦。我实际上是通过文件路径抛出本机方法。相同的路径(不同的文件结尾)还用于在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();
...
}
LogCat 输出:
Fatal signal 11 (SIGSEGV) at 0x000009f4 (code=19), thread 23789
我还尝试对路径进行硬编码(例如“/sdcard/test.xml”或“/storage/emulated/0/text.xml”)。如果我使用“test.xml”作为文件路径,我不会收到任何错误,但我无法在手机 (HTC One) 上找到该文件。
有什么建议吗?
谢谢你的时间。
UPDATE:
这工作得很好,所以文件存储有问题。 opencv中有没有其他方法可以将其解析为xml/json格式?也许结果是字符串?
FILE* file = fopen(nativeString,"w+");
fputs("hello, world\n", file);
fclose(file);