2014-05-15 2 views
0

안드로이드 응용 프로그램을 작성하려고합니다. 마녀는 opencv를 사용하여 키포인트와 디스크립터를 계산하고 저장합니다. 그러나 나는 cv : FileStorage에 문제가있다. 실제로 파일 경로를 네이티브 메서드를 던지고 있어요. javaside에 다른 파일을 저장하는데도 동일한 경로 (다른 파일 끝)가 사용됩니다.안드로이드에서 opencv FileStorage 네이티브를 사용합니다.

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(); 
... 
} 

로그 캣 출력 :

Fatal signal 11 (SIGSEGV) at 0x000009f4 (code=19), thread 23789 

는 또한 ("/sdcard/test.xml"또는 "/storage/emulated/0/text.xml ')가 경로를 하드 코딩 tryed . "test.xml"을 파일 경로로 사용하는 경우 오류가 발생하지 않지만 휴대 전화 (HTC One)에서 파일을 찾을 수 없습니다.

조언이 있으십니까?

감사합니다.

UPDATE :

이 잘 작동하므로 FileStorage에 문제가 있습니다. opencv에서 xml/json 형식으로 구문 분석 할 수있는 다른 방법이 있습니까? 아마도 문자열을 결과로?

FILE* file = fopen(nativeString,"w+"); 
fputs("hello, world\n", file); 
fclose(file); 
+0

앱에 대한 쓰기 권한을 얻었습니까? – berak

+0

또한 magdically subdirs를 생성 할 것이라고 기대하지 마십시오. – berak

+0

예, 쓰기 권한을 얻었습니다. subdir이 이미 존재하면 java part는 같은 dir에 다른 파일을 씁니다. – Reas0

답변

0

여기 비슷한 질문을했습니다 imread returns empty matrix while ifstream can open and read the same file 그리고 내가 네이티브 부분에서 파일을 조작 할 수있는 경우에도, 내가 OpenCV의의 FileStorage를 사용하지 못할 것을 발견했다.

그래서 내가 행렬, 계단식 분류기 등을로드 할 수 없습니다.

파일에서 메모리로 데이터로드를 시도하고 메모리에서 FileStorage를 작성했지만 작성을 위해 작성했지만 작동하지 않습니다 (Windows에서 완벽하게 작동). 모든 노드에 액세스 할 수 없습니다.

관련 문제