我正在将我的 mat 文件转换为 xml 文件以在 opencv 中读取它。我能够读取具有双重类型的 xml,但我无法读取字符串。如何将字符串类型存储到 xml,以便 opencv 可以读取并将其存储在矩阵或向量中,无论哪种方式都是可能的。
color_details.name 包含以下数据:蓝色红色黄色等。
我在 matlab 中转换为 xml 的代码是:
load('color.mat');
[Row,Col]=size(color_details);
docNode=com.mathworks.xml.XMLUtils.createDocument('opencv_storage');
docRootNode = docNode.getDocumentElement;
orientation=docNode.createElement('color_details_name');
orientation.setAttribute('type_id','opencv-matrix');
docRootNode.appendChild(orientation);
rows=docNode.createElement('rows');
rows.appendChild(docNode.createTextNode(num2str(Row)));
orientation.appendChild(rows);
cols=docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(num2str(Col)));
orientation.appendChild(cols);
dt=docNode.createElement('dt');
dt.appendChild(docNode.createTextNode('d')); //not sure what to write here
orientation.appendChild(dt);
data=docNode.createElement('data');
for i=1:Row
for j=1:Col
mapdata=(color_details(i,j).name);
data.appendChild(docNode.createTextNode(mapdata));
data.appendChild(docNode.createTextNode(' '));
end
end
orientation.appendChild(data);
orientation_save_name=['color_details_name.xml' ];
xmlwrite(orientation_save_name,docNode);
edit(orientation_save_name);
我在opencv中要阅读的代码是这样的::
string filename = "color_details_name.xml";
Mat colors;
FileStorage fs;
fs.open(filename, FileStorage::READ);
if (fs.isOpened())
{
cout<<"File is opened\n";
}
fs["color_details_name"] >> colors;
cout<<colors<<endl;
fs.release();
但是上面的代码给出了一些类型错误。我该如何解决这个问题?