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适合树状结构。
他还可以写矩阵,鉴于目前还没有学到,暂时略过。
Opencv step by step - 配置文件的更多相关文章
- 持续交付工具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 ...
- Linux 学习 step by step (2)
Linux 学习 step by step (2) Linux,想要我说爱你真的不容易了,尽管,你是ubutun,尽管,你有蛮界面.但是,操作你,还是没有操作windows那么的如鱼得水了.为了更 ...
- Devops step by step
接着上次分享的devops历程[Followme Devops实践之路], 大家希望能够出一个step by step手册, 那今天我就来和手把手来一起搭建这么一套环境, 演示整个过程! 实验环境需要 ...
- 精通initramfs构建step by step
(一)hello world 一.initramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式 的打包文件.当内核启动时,会从这个打包文件中导出文件到内核的rootfs ...
- [py]python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...
- Linkerd 2.10(Step by Step)—2. 自动化的金丝雀发布
通过结合 Linkerd 和 Flagger 来根据服务指标自动金丝雀(canary)发布,从而降低部署风险. Linkerd 2.10 中文手册持续修正更新中: https://linkerd.ha ...
- Linkerd 2.10(Step by Step)—控制平面调试端点
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Linkerd 2.10(Step by Step)—配置重试
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Linkerd 2.10(Step by Step)—3. 自动轮换控制平面 TLS &Webhook TLS 凭证
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Step by step Dynamics CRM 2011升级到Dynamics CRM 2013
原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...
随机推荐
- 抓包工具charles使用教程指南
0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...
- Java 读取大文件方法
需求:实际开发中读取文本文件的需求还是很多,如读取两个系统之间FTP发送文件,读取后保存到数据库中或日志文件的数据库中保存等. 为了测试首先利用数据库SQL生成大数据文件. 规则是 编号|姓名|手机号 ...
- Windows下查看端口占用
最近在重新安装Mysql的时候,发现3306默认端口被占用了.类似的情况常常遇到,想查看到底是哪个程序把这个端口占用了. 下面是我google找到的方法,和大家分享. 1. 首先,使用netstat ...
- Redis-stat的安装与使用
redis-stat是一个用ruby写成的监控redis的程序,基于info命令获取信息,而不是通过monitor获取信息 一.安装ruby yum install -y ruby ruby-deve ...
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
第一部分:微信公众号对接的基本介绍 一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击“修改配置”按钮,填写服务器地址( ...
- 续Gulp使用入门三步压缩CSS
gulp 压缩css 一.安装 gulp-minify-css 模块 提示:你需要使用命令行的 cd 切换到对应目录后进行安装操作. 在命令行输入 npm install gulp-minify-cs ...
- android去掉顶部标题栏
在清单文件(manifest.xml)里面实现 <application> <activity android:name="cn.ui.activity.UserRegAc ...
- Android 系统架构
Android 系统从下至上分为四层:Linux 内核.Android 核心库及Android 运行时环境(Android Runtime). 应用程序框架以及应用程序等. Linux 内核(Linu ...
- yum 安装包的用法
最近刚爆出linux下glibc有重大漏洞,修复方案为升级glibc库 RHEL/CentOS下一键即可修复 : sudo yum update glibc .或者如果本地有rpm包 直接 rpm - ...
- AngularJS跨域请求
本文主要针对网上各种跨域请求的总结,并加入自己的验证判断,实现工作中遇到的跨域问题.所涉及到的领域很小,仅仅局限于:AngularJS CORS post 并同时需要实现json数据传送给服务器. 首 ...