专栏首页漫漫深度学习路opencv(二):FileStorage类

opencv(二):FileStorage类

opencv FileStorage类

使用这个工具类,我们可以将 opencv 中的数据结构(或者int,float,string)保存到 XML/YAML 文件中去。或者从XML/YAML文件中加载这些数据。

这个类的声明在 “opencv2\core.hpp” 头文件中

保存

代码一:

FileStorage fs("test.xml", FileStorage::WRITE);

fs <<"name" << "keithyin";
fs<< "age"<<18;
//等价于
fs <<"name" << "keithyim"<<"age"<<18;

fs.release();
<?xml version="1.0"?>
<opencv_storage>
<name>keithyim</name>
<age>18</age>
</opencv_storage>

代码二:

FileStorage fs("test.xml", FileStorage::WRITE);
fs <<"name" << "[" <<"first name"<<"keith" <<"last name"<<"yin"<<"]";
fs.release();
<?xml version="1.0"?>
<opencv_storage>
<name>
  "first name" keith "last name" yin
</name>
</opencv_storage>

看出有”[]” 和 没 “[]”的不同之处了吗。”[]”表示里面的东西是个序列 string

代码三:

FileStorage fs("test.xml", FileStorage::WRITE);
    fs <<"name" << "{" <<"first_name"<<"keith" <<"last_name"<<"yin"<<"}";
    fs.release();
<?xml version="1.0"?>
<opencv_storage>
<name>
  <first_name>keith</first_name>
  <last_name>yin</last_name></name>
</opencv_storage>

{}表示里面的东西还是键值对。

读取

FileStorage fs("test.xml", FileStorage::READ);
string name;
fs["name"]["first_name"] >> name;
cout << name << endl;
fs.release();
keith

这样就读出来了。

存储Mat类型数据

void test(){
    FileStorage fs("test.xml", FileStorage::WRITE);
    Mat mat(2, 2, CV_8UC3);
    fs << "mat_val" << mat;
    fs.release();
}

test.xml中数据的内容是:

<?xml version="1.0"?>
<opencv_storage>
<mat_val type_id="opencv-matrix">
  <rows>2</rows>
  <cols>2</cols>
  <dt>"3u"</dt>
  <data>
    205 205 205 205 205 205 205 205 205 205 205 205</data></mat_val>
</opencv_storage>

读取保存的Mat类型数据

void test(){
    FileStorage fs("test.xml", FileStorage::READ);
    Mat mat;
    fs["mat_val"] >> mat;
    cout << mat << endl;
    fs.release();
}
[205, 205, 205, 205, 205, 205;
  205, 205, 205, 205, 205, 205]

参考资料

http://www.cnblogs.com/fourseas/p/5519681.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • tensorflow学习笔记(十一):seq2seq Model相关接口介绍

    tf.sampled_softmax_loss()中调用了_compute_sampled_logits() 关于__compute_sampled_logit...

    ke1th
  • python 文件操作

    python 文件操作 判断文件/文件夹是否存在 import os print os.path.exits(file_name) # 存在:返回True,否则...

    ke1th
  • tf-idf

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u012436149/article/detail...

    ke1th
  • 1999年,马云的业务员找我们建黄页,现在我们的业务量有望跑过天猫国际和考拉

    丁建东第一份工作开始于1997年,这时候,马云的淘宝还没有影子,计算机还没有普及,还是黄页时代。

    养码场
  • SAP Spartacus PagelayoutComponent里的template

    Jerry Wang
  • 设计模式----责任链模式详解

    责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处...

    Typhoon
  • 开发新人有必要考虑在工作一年后跳槽

    来源:cnblogs.com/hiroshi-cnblogs/p/10354565.html

    Java团长
  • 认知1.0 固化思维

    平方级速度的创新和演化 几年新新词汇、创新事物像火山爆发一样出现,让人应接不暇,困扰的同时,它们又高速演化出1.0版、2.0版、3.0版... 12月5日,20...

    企鹅号小编
  • 必须放在特定的文件夹中才能运行的Python程序

    下面的小代码要演示的问题是,可以规定某个Python程序必须放在特定的文件夹(代码中假设必须放到Python安装目录中)中才能运行,移动到其他文件夹之后会拒绝运...

    Python小屋屋主
  • Python为什么流行?Python代码能实现哪些有趣的功能

    python究竟有多强大?Python代码能实现哪些功能?众所周知,Python入门简单、功能强大,是人工智能时代最佳的编程语言。但很多人好奇Python究竟有...

    诸葛青云

扫码关注云+社区

领取腾讯云代金券