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,下面是它的内容:

<?xml version="1.0"?>
<opencv_storage>
<frame_count>10</frame_count>
</opencv_storage>

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


#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);

}

效果是:

<?xml version="1.0"?>
<opencv_storage>
<frame_count>10</frame_count>
<frame_size>
  <frame_detail>
    <K>33</K>
    <FF>87</FF></frame_detail>
  <x>320</x>
  <Y>240</Y></frame_size>
</opencv_storage>


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

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

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


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



posted @ 2014-11-04 20:52  crazy_thb  阅读(293)  评论(0编辑  收藏  举报