2014-07-15 2 views
0

opencv를 사용하여 파일의 일부 데이터를 쓰거나 읽습니다. 여기 내 코드와 설정 파일의 구조가있다.opencv에서 폴더 안에있는 XML 파일에 데이터를 쓰는 방법은 무엇입니까?

/src/test.cpp 
/src/config/FrameDifferenceBGS.xml 

코드는이 작동하지 않는

CvFileStorage * fs = cvOpenFileStorage(".config/FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE); 
cvWriteInt(fs,"enableThreshold",21); 
cvReleaseFileStorage(&fs); 

입니다.

'에 대한 동일한 오류가 발생했습니다. OpenCV 오류 : cvWriteInt 파일의 잘못된 포인터 (파일 저장소에 잘못된 포인터)가 /home/winawer/Downloads/opencv-2.4.9/modules/core/src/persistence.cpp에 있습니다. 나는 소스 코드와 같은 수준으로 파일로 변경하는 경우, 라인 2964은 ,

그러나 '이력서 :: 예외'의 인스턴스를 던지는 후

/src/test.cpp 
/src/FrameDifferenceBGS.xml 


CvFileStorage * fs = cvOpenFileStorage("FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE);

라고 종료

이것은 작동합니다.

그래서 내 질문은 소스 코드와 다른 수준에있는 파일에 데이터를 쓰는 방법입니까? 솔루션

: 지금 내가 프로젝트 소스 폴더가 아닌 프로젝트의 디버그 폴더의 config 폴더를 두어야 솔루션을 알아낼

+0

아마도'config'! ='.config' 때문에? –

+0

'./config/FrameDifferenceBGS.xml'또는 '/config/FrameDifferenceBGS.xml'또는 'config/FrameDifferenceBGS.xml'이 제대로 작동하지 않습니다. – user824624

+1

'cv :: FileStorage'와 같이 C++ API를 사용해야합니다. , 비추천 C API보다. http://answers.opencv.org/question/17546/opencv-will-drop-c-api-support-soon/을 참조하십시오. – Bull

답변

1

당신은 / 누락 :

CvFileStorage * fs = cvOpenFileStorage(".config/FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE); 

한다 be

CvFileStorage * fs = cvOpenFileStorage("./config/FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE); 

N이 있으므로 cvOpenFileStorage()이 실패하므로 널 포인터 오류가 발생합니다. .config

0

당신이 상대 경로를 사용하려면라는 오 디렉토리는 올바른 형식은 다음과 같습니다

"./config/FrameDifferenceBGS.xml" 

또는 지금

/config/FrameDifferenceBGS.xml 

,이에 대한 기본 (루트) 경로를 알아야한다 상대 경로. 상대 경로가 출력 디렉토리에 상대적이라는 것을 알고 있습니다. 디버그 모드에서 작업하는 경우 프로젝트 출력 디렉터리는 디버그 폴더입니다. 그렇지 않으면 Release 폴더입니다.

관련 문제