我想使用 opencv FileStorage 对象编写一个 XML 文件。
我看到的大多数示例的工作原理如下
FileStorage fs("d:\\1.xml" , FileStorage::WRITE);
fs << "one" << 1;
Run Code Online (Sandbox Code Playgroud)
我想编写一个带有修改后的名称变量的部分,这意味着不必在编译时插入文本。我寻找这样的东西:
string st = "1";
fs << st.c_str() << 1;
Run Code Online (Sandbox Code Playgroud)
但是我不断收到运行时错误。它拒绝工作,我尝试过使用 opencv 字符串类型、stl 字符串类型、char*,但仍然无法使其工作。
这是一个棘手的问题。查看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;
}
Run Code Online (Sandbox Code Playgroud)
这应该有效。
编辑:只要以字母开头(例如“a1”),您就可以将数字放入“字符串”变量中,它也可以。
| 归档时间: |
|
| 查看次数: |
756 次 |
| 最近记录: |