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

先来一个简单的例子:

#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适合树状结构。

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

Opencv step by step - 配置文件的更多相关文章

  1. 持续交付工具ThoughtWorks Go部署step by step

    持续交付工具ThoughtWorks Go部署step by step http://blogs.360.cn/360cloud/2014/05/13/%E6%8C%81%E7%BB%AD%E4%BA ...

  2. Linux 学习 step by step (2)

      Linux 学习 step by step (2) Linux,想要我说爱你真的不容易了,尽管,你是ubutun,尽管,你有蛮界面.但是,操作你,还是没有操作windows那么的如鱼得水了.为了更 ...

  3. Devops step by step

    接着上次分享的devops历程[Followme Devops实践之路], 大家希望能够出一个step by step手册, 那今天我就来和手把手来一起搭建这么一套环境, 演示整个过程! 实验环境需要 ...

  4. 精通initramfs构建step by step

    (一)hello world  一.initramfs是什么  在2.6版本的linux内核中,都包含一个压缩过的cpio格式 的打包文件.当内核启动时,会从这个打包文件中导出文件到内核的rootfs ...

  5. [py]python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...

  6. Linkerd 2.10(Step by Step)—2. 自动化的金丝雀发布

    通过结合 Linkerd 和 Flagger 来根据服务指标自动金丝雀(canary)发布,从而降低部署风险. Linkerd 2.10 中文手册持续修正更新中: https://linkerd.ha ...

  7. Linkerd 2.10(Step by Step)—控制平面调试端点

    Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...

  8. Linkerd 2.10(Step by Step)—配置重试

    Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...

  9. Linkerd 2.10(Step by Step)—3. 自动轮换控制平面 TLS &Webhook TLS 凭证

    Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...

  10. Step by step Dynamics CRM 2011升级到Dynamics CRM 2013

    原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...

随机推荐

  1. Entity Framework做IN查询

    开发中遇到的Too high level of nesting for select错误 项目使用了Entity Framework结合Mysql, 遇到了一个非常奇怪的性能问题,一个看起来非常简单的 ...

  2. Android keystore 密码忘记了的找回办法

    keystore密码忘记了,准备给自己的应用发布一个新版本,在apk打包时,发现之前的用的keystore密码忘了.如果换一个keystore,则之前已经安装应用的用户就必须手工卸载原应用才能安装,非 ...

  3. 用mciSendString做音乐播放器

    音乐操作类 public class clsMCI { public clsMCI() { // // TODO: 在此处添加构造函数逻辑 // } //定义API函数使用的字符串变量 [Marsha ...

  4. ehcache入门

    一.简介 ehcache是一个开源的,纯java进程内的缓存框架.它具有快速,简单,具有多种缓存策略等特点. Hibernate中默认就是用了ehcache.在我们的应用中使用ehcache可以快速地 ...

  5. cnblogs美化及插件

    1.vp计数 http://www.amazingcounters.com 2.来源地图 http://clustrmaps.com 2.1来源地图 http://www.flagcounter.co ...

  6. CANopen DS301协议中文翻译V03版

    V0.1版PDF格式供下载参考,只是全面框架翻译,会有大量错误和不确定的地方,希望读者积极参与校对,提供修改意见,完善译文.下载 V0.2版校对提前完成,下载地址 V0.3版使用GitBook编辑(h ...

  7. Selenium2怎么调用selenium1中方法

    虽然selenium1.0已经成为过去时,现在都用selenium2.0,但是如果想要在代码中调用selenium1.0的api怎么办,看下面 WebDriver driver = new Chrom ...

  8. UESTC 917 方老师的分身IV --求欧拉路径

    判断欧拉路径是否存在及求出字典序最小的欧拉路径问题(如果存在). 将字符串的第一个字母和最后一个字母间连边,将字母看成点,最多可能有26个点(a-z),如果有欧拉路径,还要判断是否有欧拉回路,如果有, ...

  9. 2014-2015 Codeforces Trainings Season 2 Episode 7 G Gophers --线段树

    题意: 有n个地鼠,m个CD碟,每个CD碟有一个影响范围,范围内的地鼠都会被吵到,每次有一个操作就是移动CD碟,然后求每次被影响的地鼠有多少只. 解法: 线段树做.我们只关注地鼠有没有被吵到就可以了, ...

  10. <a href="javascript:void(0)" onclick="ff()" ></a> 用法解析

    javascript:void(0) 仅仅表示一个死链接 如果是个# javascript:void(#),就会出现跳到顶部的情况,搜集了一下解决方法 1:<a href="####& ...