代碼片段----cv::FileStorage

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 mat
	cv::FileStorage fileOut("TrainData.xml", cv::FileStorage::WRITE);
	fileOut << "TrainData" << TrainData;
	fileOut << "TrainClass" << TrainClass;
	fileOut.release();

	// load mat
	cv::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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章