2014-06-24 31 views
3

我想使用opencv FileStorage對象編寫一個xml文件。是否可以在opencv中使用字符串作爲名稱FileStorage

大多數例子我能看到的作品像下面

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; 
} 

這應該工作。

編輯:只要您以字母開頭(例如「a1」),您就可以將數字放入'字符串'變量中,它也可以工作。

+0

非常感謝你,但是這仍然沒有多大幫助,因爲我想枚舉使用數字表示作爲字符串的標記,我不能直接使用字母來枚舉。 – TripleS

+0

@TripleS似乎只有第一個字符被選中,並且必須是一個字母。這是,你可以在你的變量中添加一個前綴使其工作,看看我編輯的答案;) –

+0

非常感謝你...已經按字母順序實現了:) – TripleS

相關問題