mat ファイルを xml ファイルに変換して、opencv で読み取ります。double 型の xml は読めたのですが、文字列が読めません。文字列型をxmlに保存して、opencvがそれを読み取ってマトリックスまたはベクトルに保存できるようにするにはどうすればよいですか。
color_details.name には、青、赤、黄などのデータが含まれています。
xmlで変換するためのmatlabの私のコードは次のとおりです。
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();
しかし、上記のコードはいくつかの型エラーを出します。どうすればこれを解決できますか?