如何将已在xml文件中写入的OpenCV Mat转换回图像?

时间:2014-12-29 23:20:28

标签: c++ xml matlab opencv

我写了一些代码来生成一个.xml文件,其中包含OpenCV中Mat文件的RGB数据。我想从xml文件中的数据点在MATLAB中重新创建这个图像。但我不确定xml文件的格式,因为当我打开它时,它看起来像这样:

<?xml version="1.0?>
<opencv_storage>
<myMatrix type_id="opencv-matrix">
    <rows>116</rows>
    <cols>116</cols>
    <dt>u</dt>
    <data>
      97 101 97 98 99 97 ...
    </data>
    </myMatrix>
    </opencv_storage>

2 个答案:

答案 0 :(得分:4)

您可以在opencv中将其转换为matlab格式。

使用Filestorage读取它:

Mat m;
Filestorage fs("m.xml", Filestorage::READ);
fs["myMatrix"] >> m;

然后以matlab格式打印出来(或写入文件):

// 2.4 version
cerr << format(m,"MATLAB") << endl;
// 3.0 version
cerr << format(m,cv::Formatter::FMT_MATLAB) << endl;

答案 1 :(得分:0)

获取xml到struct转换器,如下所示:

http://www.mathworks.com/matlabcentral/fileexchange/28518-xml2struct

这将允许您将数据转换为结构,然后您可以简单地重塑数据:

pic = reshape(struct.data, struct.rows, struct.cols)
image(pic)

注意:这不是开箱即用的代码。