OpenCV有时想把Mat数据(比如一个小小的矩阵)保存到文件中,然后在其他地方读入使用怎么办呢?
FileStorage是opencv中XML和YAML文件的存储类。
1. 写XML操作完整代码
Mat cameraMatrix = Mat(3, 3, CV_32FC1, Scalar::all(0)); //初始化Mat
/***********对Mat进行操作,赋值等等***************/
cv::FileStorage fs("cameraMatrix.xml", cv::FileStorage::WRITE);
fs << "cameraMatrix" << cameraMatrix;
2. 读XML操作完整代码
Mat cameraMatrix = Mat(3, 3, CV_32FC1, Scalar::all(0)); //初始化Mat
cv::FileStorage fs("cameraMatrix.xml", cv::FileStorage::READ);//新建并打开一个XML文件
fs ["cameraMatrix"] >> cameraMatrix;//写入数据,注意fs[""]只需要文件名不需要文件后缀
这里需要注意一点,fs[" "]里面的参数只用写文件名,不用写后缀。这个坑我踩过,惨痛的教训。