我必须将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
由于
答案 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