代码片段----cv::FileStorage

来源:互联网 发布:登录名无法访问数据库 编辑:程序博客网 时间:2024/06/05 20:20

Mat的保存和读取

存成图像的Mat失去了精度信息,都是归一到0-255存储的。

存数据的Mat的保存应该使用FileStorage存储成xml.


还有一个用途就是在外部设置程序的参数。对大型工程(编译慢)的调试特别有用。


#include <opencv2\opencv.hpp>int main(){cv::Mat TrainData;TrainData.push_back((cv::Mat)(cv::Mat_<float>(1, 5) << 0.1, 0.2, 0.4, 0.5, 0.6));TrainData.push_back((cv::Mat)(cv::Mat_<float>(1, 5) << 0.2, 0.1, 0.4, 0.5, 0.6));TrainData.push_back((cv::Mat)(cv::Mat_<float>(1, 5) << 0.2, 0.1, 0.5, 0.4, 0.6));TrainData.push_back((cv::Mat)(cv::Mat_<float>(1, 5) << 0.2, 0.1, 0.5, 0.6, 0.4));cv::Mat TrainClass;TrainClass.push_back((cv::Mat)(cv::Mat_<float>(4, 1) << 1.0, 1.0, 0.0, 0.0));TrainData.convertTo(TrainData, CV_32FC1);TrainClass.convertTo(TrainClass, CV_32FC1);// save matcv::FileStorage fileOut("TrainData.xml", cv::FileStorage::WRITE);fileOut << "TrainData" << TrainData;fileOut << "TrainClass" << TrainClass;fileOut.release();// load matcv::FileStorage fileIn;fileIn.open("TrainData.xml", cv::FileStorage::READ);fileIn["TrainData"] >> TrainData;fileIn["TrainClass"] >> TrainClass;std::cout << "TrainData" << TrainData << std::endl;std::cout << "TrainClass" << TrainClass << std::endl;    return 0;}