【发布时间】:2013-08-01 13:52:12
【问题描述】:
我正在尝试保存相机矩阵和失真系数以供以后使用,但是我编写的代码似乎不起作用。它不在 yml 文件中存储任何类型的数据。即使我读回来,它也不会向指定的矩阵输入任何内容。 如果我做错了什么,请帮助我理解。 我正在使用 VS2010 和 OpenCV 2.4.5
cv::Mat CameraMatrix, DistCoeffs;
CameraMatrix = (cv::Mat_<double>(3,3) << 1,2,3,4,5,6,7,8,9);
DistCoeffs = (cv::Mat_<double>(1,5) << 10, 11, 12, 13, 15);
cv::FileStorage fs("IntCali.yml", cv::FileStorage::WRITE);
fs << "CameraMatrix" << CameraMatrix;
fs << "DistCoeffs" << DistCoeffs;
fs.release();
cv::FileStorage fs2("IntCali.yml", cv::FileStorage::READ);
cv::Mat cm; fs2["CameraMatrix"] >> cm;
cv::Mat dc;
fs2["DistCoeffs"] >> dc;
fs2.release();
【问题讨论】:
-
请提供您的错误。
-
输出 OpenCV Mat 的快速方法是这样做: cout
-
顺便说一句,您可以打开 IntCali.yml 文件来检查其内容。它只是一个文本文件。
-
我在输出窗口中没有显示任何错误,但是 .yml 文件中没有存储数据。它是空的。我还使用 cout 进行了检查。 CameraMatrix 和 DistCoeff 存在,但 cm 和 dc 不存在。
-
很奇怪。在 2.4.2 和 2.4.9(master) 上完美运行
标签: opencv file-storage