天天看点

《OpenCV图像处理》——2.6 数据持久化

本节书摘来自华章计算机《opencv图像处理》一书中的第2章,第2.6节,作者:[西]葛罗瑞亚·布埃诺·加西亚(gloria bueno garcía)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

在opencv中,除了包括读取、写入图像和视频的特定函数之外,还有一种更加通用的方式用来保存/加载数据。此方法称之为数据持久化(data persistence):程序中对象和变量的值可以被记录(序列化)到磁盘上。这对于保存结果和加载配置数据是非常有用的。其主类是aptly,命名为filestorage,表示磁盘上的一个文件。实际上,数据被存储为xml格式或yaml格式。

这些是写入数据时涉及的步骤:

(1)调用构造函数filestorage,使用filestorage::write值传递一个文件名称和一个标志,数据格式则是由文件扩展名(即.xml、.yml或.yaml)定义的;

(2)使用运算符<<将数据写入文件,数据通常被写为字符串值对;

(3)使用release方法关闭文件。

读取数据时需要如下这些步骤:

(1)调用构造函数filestorage,使用filestorage::read值传递一个文件名和一个标志;

(2)使用运算符[]或>>从文件中读取数据;

下面的示例使用数据持久化保存和加载滑动条的值。

《OpenCV图像处理》——2.6 数据持久化
《OpenCV图像处理》——2.6 数据持久化

当opencv使用qt支持编译时,使用函数savewindowparameters()可以保存窗口属性,包括滑动条的值。

当使用滑动条来控制一个整数值时,只是被加入到原始图像,使其变得更亮。当程序启动时,这个值被读入(初次时,该值为0),并在程序正常退出时进行保存。注意,上面的示例中显示了有两种等价的方法读取tb1_value变量的值。文件conf?ig.xml的内容是:

《OpenCV图像处理》——2.6 数据持久化

继续阅读