2014-06-24 6 views
3

opencv FileStorage 객체를 사용하여 XML 파일을 작성하고 싶습니다.opencv FileStorage에서 문자열을 이름으로 사용할 수 있습니까?

내가 좋아하는 일을 보게 대부분의 예 I 텍스트를 컴파일 타임에 삽입 할 필요가 없습니다 것을 의미 수정 이름 변수 섹션을 작성하고 싶습니다

FileStorage fs("d:\\1.xml" , FileStorage::WRITE); 
fs << "one" << 1; 

다음 . 나는 다음과 같은 것을 찾는다.

string st = "1"; 
fs << st.c_str() << 1; 

그러나 런타임 오류가 계속 발생한다. 그것은 작동하지 않습니다, 나는 opencv 문자열 유형, stl 문자열 유형, char *를 사용하여 시도했지만 여전히 작동하게 만들 수 없습니다.

도움이 될 것입니다.

답변

3

이것은 까다 롭습니다. persistence.cpp에서 보았습니다. 변수 이름에 cv_isalpha이 선택 되었기 때문에 오류가 발생했습니다. 이것은 변수 이름이 문자로 시작해야 함을 의미합니다! 다음을 수행

시도 :

int main() { 
    string oName; 
    oName = "a"; // Now, THIS will crash if you assign "number" characters, e.g "1" 
    FileStorage fs("test.yml", FileStorage::WRITE); 
    fs << oName.c_str() << 1 ; 
    return 0; 
} 

이 작동합니다.

EDITED : 문자 (예 : 'a1')로 시작하는 한 '문자열'변수에 숫자를 넣을 수 있습니다.

+0

고맙습니다. 그러나 숫자를 문자열로 나타내는 태그를 열거하고 싶기 때문에 여전히 도움이되지 않습니다. 문자를 사용하여 곧바로 열거 할 수는 없습니다. – TripleS

+0

@TripleS 첫 번째 문자 만 검사되고 문자 여야합니다. 이것은, 당신이 할 수있는 변수에 접두사를 넣어, 내 편집 답변을 봐;) –

+0

고마워요 ... 이미 알파벳 순서로 구현 :) – TripleS

관련 문제