【发布时间】:2014-07-03 23:24:59
【问题描述】:
我正在尝试编写一个 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)上找到该文件。
有什么建议吗?
感谢您的宝贵时间。
更新:
这很好用,所以 FileStorage 有问题。 opencv 中还有其他方法可以将其解析为 xml/json 格式吗?也许结果是字符串?
FILE* file = fopen(nativeString,"w+");
fputs("hello, world\n", file);
fclose(file);
【问题讨论】:
-
您的应用是否获得了写入权限?
-
另外,不要指望它会神奇地生成子目录
-
是的,我获得了写权限。子目录已经存在,java部分在同一个目录中写入另一个文件。
-
您可能会发现这很有用:stackoverflow.com/a/21922685/1085483
标签: android opencv android-ndk native