半结构化信息

结构化:数据结构字段含义确定,清晰,可以用二维表结构来逻辑表达

非结构化:杂乱无章的数据,很难按照一个概念去进行抽取,无规律性

半结构化:结构化变化很大的数据,无法按结构化方式存储。

XML 是存储半结构化信息公认最好的模式,其Tag 由用户自动定义,除灵活性外,还具有一定的语义知识。

 

openCV中xml 文件的读写

 

临时存储结构:

使用CvFileStorage 文件存储结构体进行各种数据的存储,包括用户自定义对象(写成xml或yaml格式文件)。 

CvMemStorage

内存存储器结构体是一个可用来存储诸如序列,轮廓,图形,子划分等动态增长数据结构的底层结构。它是由一系列以同等大小的内存块构成,呈列表型。

 

读写操作:

1. cvStartWriteStruct() 向文件存储结构体中写入数据

原型:

void cvStartWriteStruct( CvFileStorage* fs, const char* name, int struct_flags, const char* type_name=NULL, CvAttrList attributes=cvAttrList());
其中参数int struct_flags 有下列两个值:
CV_NODE_SEQ - 被写入的数据结构为序列结构。这样的数据没有名称。
CV_NODE_MAP - 被写入的数据结构为图表结构。这样的数据含有名称。
这两个标志符必须被指定一个
CV_NODE_FLOW - 这个可选择标识符只能作用于YAML流。被写入的数据结构被看做一个数据流(不是数据块),它更加紧凑,当结构或数组里的数据是标量时,推荐用这个标志。

 

type_name对象类型名, 即xml 中,<节点 属性=" type_name">, 目前openCV的版本支持的属性为“type_id“。

 

注:使用完该操作后需要 cvEndWriteStruct(fs);

 

 

2. cvWriteRawData()写入基本数据数组 
原型:

void cvWriteRawData( CvFileStorage* fs, const void* src, int len, const char* dt );

参数char* dt 取值:

 ([count]{'u'|'c'|'w'|'s'|'i'|'f'|'d'})..., 这些特性与C语言的类型相似 :

'u' - 8位无符号数。
'c' - 8位符号数。
'w' - 16位无符号数。
's' - 16位符号数。
'i' - 32位符号数。
'f' - 单精度浮点数。
'd' - 双精度浮点数。
'r' - 指针。输入的带符号的低32位整数。 这个类型常被用来存储结构体之间的链接。
count 是可选的,是当前类型的计数器 。 例如, dt='2if' 是指任意的一个数组元素的结构是:2个字节整形数,后面跟一个单精度浮点数。上面的说明与‘iif', '2i1f' 等相同。另外一个例子:dt='u'是指 一个由类型组成的数组, dt='2d'是指由两个双精度浮点数构成的数组。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值