Opencv step by step


有时候,我们需要用配置文件存储一些图像或者视频的信息。


先来一个简单的例子:

#include <cv.h>
#include <highgui.h>

int main(int argc,char **argv)
{
	CvFileStorage *fs = cvOpenFileStorage("cfg.xml", 0, CV_STORAGE_WRITE);
	cvWriteInt(fs, "frame_count", 10);
	cvReleaseFileStorage(&fs);

}

结果是生成一个cfg.xml,下面是它的内容:


这里不仅仅可以写一些简单数据,还可以写好几层的数据:


#include <cv.h>
#include <highgui.h>

int main(int argc,char **argv)
{
	CvFileStorage *fs = cvOpenFileStorage("cfg.xml", 0, CV_STORAGE_WRITE);
	cvWriteInt(fs, "frame_count", 10);


	cvStartWriteStruct(fs, "frame_size", CV_NODE_MAP);
		cvStartWriteStruct(fs, "frame_detail", CV_NODE_MAP);
			cvWriteInt(fs, "K", 33);
			cvWriteInt(fs, "FF", 87);
		cvEndWriteStruct(fs);
		cvWriteInt(fs, "x", 320);
		cvWriteInt(fs, "Y", 240);
	cvEndWriteStruct(fs);


	cvReleaseFileStorage(&fs);

}

效果是:



这里要注意了,这里使用了CV_NODE_MAP,这里就要加key了,不然会报错。如果使用了CV_NODE_SEQ的时候加key也会报错。

这里的key是指上面的"x","y"这些值。不加key的时候是0.

所以,SEQ适合顺序结构,MAP适合树状结构。


他还可以写矩阵,鉴于目前还没有学到,暂时略过。