4D矩阵从Matlab到OpenCV



我必须从Matlab导出矩阵到OpenCV。我使用yaml格式,然后用cv::FileStorage modelFile在OpenCV中读取文件,并将数据存储在cv::Mat变量中。对于普通的2D矩阵,它工作得很好。但是,对于我的一个大的四维矩阵,我得到的错误是字符串太长。矩阵的大小为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

谢谢

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

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缩小到200mb。

Saludo

相关内容

  • 没有找到相关文章

最新更新