我正在尝试使用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
它没有帮助!
任何想法我该怎么做!
提前谢谢!答案 0 :(得分:2)
cameraMatrix应该有cv::Mat
类型。 cv::Mat
以这种方式保存modules/core/src/persistence.cpp
(参见icvWriteMat
)
如果没有附加数据(这是cv::Mat
3x3或1x9矩阵?),OpenCV将无法理解[...]
大小。并且通常使用写入来稍后读取。您可以使用一些原始写入技术编写您想要的内容(并且无法使用opencv读取它)或创建您自己的可序列化matrix3x3
或cameraMatrix
类型。