OpenCV FileStorage类读写XML或YML文件

OpenCV FileStorage类读写XML/YML文件

在OpenCV程序中,需要保存中间结果的时候常常会使用.xml / .yml文件,opencv2.0之前都是使用C风格的代码,当时读写XML文件分别使用函数cvLoad()和cvSave()。在2.0以后的OpenCV转为支持C++,这一举措大大减少了代码量以及编程时需要考虑的细节。

新版本的OpenCV的C++接口中,imwrite()和imread()只能保存整数数据,且需要以图像格式。当需要保存浮点数据或者XML/YML文件时,之前的C语言接口cvSave()函数已经在C++接口中被删除,代替它的是FileStorage类。这个类非常的方便,封装了很多数据结构的细节,编程的时候可以根据统一的接口对数据结构进行保存。

1. FileStorage类写XML/YML文件

新建一个FileStorage对象,以FileStorage::WRITE的方式打开一个文件。 使用 << 操作对该文件进行操作。

释放该对象,对文件进行关闭。

例子如下:

OpenCV FileStorage类读写XML或YML文件

FileStorage fs("test.yml", FileStorage::WRITE);

fs << "frameCount" << 5; time_t rawtime; time(&rawtime);

fs << "calibrationDate" << asctime(localtime(&rawtime));

Mat cameraMatrix = (Mat_<double>(3,3) << 1000, 0, 320, 0, 1000, 240, 0, 0,

1); //又一种Mat初始化方式

Mat distCoeffs = (Mat_<double>(5,1) << 0.1, 0.01, -0.001, 0, 0); fs << "cameraMatrix" << cameraMatrix << "distCoeffs" << distCoeffs;

//features为一个大小为3的向量,其中每个元素由随机数x,y和大小为8的uchar数组组成 fs << "features" << "[";

for( int i = 0; i < 3; i++ ) {

int x = rand() % 640;

int y = rand() % 480;

uchar lbp = rand() % 256;

fs << "{:" << "x" << x << "y" << y << "lbp" << "[:";

for( int j = 0; j < 8; j++ )

Word文档免费下载Word文档免费下载:OpenCV FileStorage类读写XML或YML文件 (共3页,当前第1页)

你可能喜欢

  • preaprint文件打印
  • python读取pcap文件
  • frontpage课件
  • estrongs文件夹
  • MFC文件读写
  • openapi文件夹
  • poi读写Excel文件

OpenCV FileStorage类读写XML或YML文件相关文档

最新文档

返回顶部