在opencv中使用fileStorage

时间:2013-10-08 07:09:58

标签: c++ opencv

我正在尝试使用cv :: FileStorage将我的cameramatrix保存到 yml 文件中,这很好用:

cv::FileStorage  fs("calibration_result.yml",cv::FileStorage::WRITE);

..............

this->fs << "the camera matrix is "<<this->cameraMatrix;

这是我得到的:

the camera matrix is : !!opencv-matrix  /* why do I get this 
   rows: 
   cols: 3
   dt: d
   data: [ 6.9722486929603847e+003, 0., 6.3950000000000000e+002, 0.,
       7.0010247500898549e+003, 5.1150000000000000e+002, 0., 0., 1. ]

我想得到的是:

the camera matrix is :
[ 6.9722486929603847e+003, 0., 6.3950000000000000e+002, 0.,
           7.0010247500898549e+003, 5.1150000000000000e+002, 0., 0., 1. ]

我已经尝试使用cameraMatrix.data它没有帮助!

任何想法我该怎么做!

提前谢谢!

1 个答案:

答案 0 :(得分:2)

cameraMatrix应该有cv::Mat类型。 cv::Mat以这种方式保存modules/core/src/persistence.cpp(参见icvWriteMat) 如果没有附加数据(这是cv::Mat 3x3或1x9矩阵?),OpenCV将无法理解[...]大小。并且通常使用写入来稍后读取。您可以使用一些原始写入技术编写您想要的内容(并且无法使用opencv读取它)或创建您自己的可序列化matrix3x3cameraMatrix类型。