从Matlab到OpenCV的4D矩阵

时间:2015-06-09 07:16:36

标签: c++ matlab opencv matrix yaml

我必须将Matlab中的矩阵导出到OpenCV。我使用yaml格式,然后使用cv::FileStorage modelFile在OpenCV中读取文件,并将数据存储在cv::Mat个变量中。对于普通的2D矩阵,它工作正常。但是,对于我的一个大4D矩阵,我得到字符串太长的错误。 Matrix的大小为16 | 16 | 70409 | 8.

有人知道存储它的好方法吗?也许这只是一种格式问题。

代码是:

for i = 1:matrixSize(1)
   for j=1:matrixSize(2) 
       fprintf( file, '    - [');   
       for a = 1:matrixSize(3)
           for b = 1:matrixSize(4)
               fprintf( file, '%.6f', A(i,j,a,b));
               if(a ~= matrixSize(3))
                fprintf( file, ',');
               end
           end
       end
       fprintf( file, ']\n');
   end
end

由于

1 个答案:

答案 0 :(得分:0)

我的解决方案是使用而不是yaml,以二进制格式保存模型,然后使用正常的fread函数读取它。 当然你必须知道每个矩阵的大小。

fileID = fopen(BinModel,'w');
fwrite(fileID,[size(model.nSegs),0,0],'uint32'); % size of the matrix 
fwrite(fileID,model.nSegs,'uint8'); % matrix data

文件从1.4 GB缩小到200 MB。

Saludo