如何从XML文件(OpenCV)中将一定数量的行读入Mat对象?

时间:2015-04-20 14:39:26

标签: c++ xml opencv

我希望从xml文件中读取一定数量的行到mat对象中。例如,查看下面的xml文件,我希望只读取10,000行数据。然后我想将10,000行存储到一个大小为(10000,95,CV_32F)的mat对象中;

<?xml version="1.0"?>
<opencv_storage>
<featureVector type_id="opencv-matrix">
   <rows>34381</rows>
   <cols>95</cols>
   <dt>f</dt>
   <data>
    1.44965559e-001 9.77574438e-002 5.78284226e-002 2.95825675e-002
    2.90913619e-002 4.95372787e-002 5.18676676e-002 1.07530527e-001
    6.14087284e-002 1.18194185e-001 5.44071913e-001 3.08346570e-001
    4.71893772e-002 5.77269197e-002 1.99747104e-002 7.79013662e-003
    1.93754639e-002 1.56246489e-002 1.07879408e-001 6.43140554e-001
    3.08369696e-001 5.67582771e-002 6.82025328e-002 1.12302238e-002
    1.19626308e-002 2.68770847e-002 1.13766259e-002 3.16501665e-003
    5.22044823e-002 8.28718115e-003 8.87764909e-004 1.62017101e-003
    ............ 

因此,我必须在整个XML数据中读取到mat对象的代码如下:

 Mat posData
 FileStorage pos("C:/.../posSamps.xml", FileStorage::READ);
 pos["featureVector"] >> posData;

无论如何,我可以将其限制为特定行数而不是读取xml文件中的所有数据吗?

1 个答案:

答案 0 :(得分:0)

除非你真的受硬件限制,否则让opencv读取整个cv :: Mat会更容易,更快,然后使用region of interest将行子集复制到另一个mat中。