opencv中xml/yml文件操作类
opencv有关xml/yml/json帮助文档:opencv
下面是官方给出的一个示例,通过使用和修改来学习这方面的知识吧。
可以看到这个
创建一个新的VS工程,把代码复制进去,配置好opencv
点击调试->调试属性
调试->命令参数,填入一个yml文件
点击调试
生成yml文件,打开内容和我们程序内设置的一样
下面是源码:
/** filestorage_sample demonstrate the usage of the opencv serialization functionality*/#include "opencv2/core.hpp"
#include <iostream>
#include <string>using std::string;
using std::cout;
using std::endl;
using std::cerr;
using std::ostream;
using namespace cv;static void help(char** av)
{cout << "\nfilestorage_sample demonstrate the usage of the opencv serialization functionality.\n"<< "usage:\n"<< av[0] << " outputfile.yml.gz\n"<< "\n outputfile above can have many different extensions, see below."<< "\nThis program demonstrates the use of FileStorage for serialization, that is in use << and >> in OpenCV\n"<< "For example, how to create a class and have it serialize, but also how to use it to read and write matrices.\n"<< "FileStorage allows you to serialize to various formats specified by the file end type."<< "\nYou should try using different file extensions.(e.g. yaml yml xml xml.gz yaml.gz etc...)\n" << endl;
}struct MyData
{MyData() :A(0), X(0), id(){}explicit MyData(int) :A(97), X(CV_PI), id("mydata1234"){}int A;double X;string id;void write(FileStorage& fs) const //Write serialization for this class{fs << "{" << "A" << A << "X" << X << "id" << id << "}";}void read(const FileNode& node) //Read serialization for this class{A = (int)node["A"];X = (double)node["X"];id = (string)node["id"];}
};//These write and read functions must exist as per the inline functions in operations.hpp
static void write(FileStorage& fs, const std::string&, const MyData& x){x.write(fs);
}
static void read(const FileNode& node, MyData& x, const MyData& default_value = MyData()){if(node.empty())x = default_value;elsex.read(node);
}static ostream& operator<<(ostream& out, const MyData& m){out << "{ id = " << m.id << ", ";out << "X = " << m.X << ", ";out << "A = " << m.A << "}";return out;
}
int main(int ac, char** av)
{cv::CommandLineParser parser(ac, av,"{@input||}{help h ||}");if (parser.has("help")){help(av);return 0;}string filename = parser.get<string>("@input");if (filename.empty()){help(av);return 1;}//write{FileStorage fs(filename, FileStorage::WRITE);cout << "writing images\n";fs << "images" << "[";fs << "image1.jpg" << "myfi.png" << "baboon.jpg";cout << "image1.jpg" << " myfi.png" << " baboon.jpg" << endl;fs << "]";cout << "writing mats\n";Mat R =Mat_<double>::eye(3, 3),T = Mat_<double>::zeros(3, 1);cout << "R = " << R << "\n";cout << "T = " << T << "\n";fs << "R" << R;fs << "T" << T;cout << "writing MyData struct\n";MyData m(1);fs << "mdata" << m;cout << m << endl;}//read{FileStorage fs(filename, FileStorage::READ);if (!fs.isOpened()){cerr << "failed to open " << filename << endl;help(av);return 1;}FileNode n = fs["images"];if (n.type() != FileNode::SEQ){cerr << "images is not a sequence! FAIL" << endl;return 1;}cout << "reading images\n";FileNodeIterator it = n.begin(), it_end = n.end();for (; it != it_end; ++it){cout << (string)*it << "\n";}Mat R, T;cout << "reading R and T" << endl;fs["R"] >> R;fs["T"] >> T;cout << "R = " << R << "\n";cout << "T = " << T << endl;MyData m;fs["mdata"] >> m;cout << "read mdata\n";cout << m << endl;cout << "attempting to read mdata_b\n"; //Show default behavior for empty matrixfs["mdata_b"] >> m;cout << "read mdata_b\n";cout << m << endl;}cout << "Try opening " << filename << " to see the serialized data." << endl << endl;//read from string{cout << "Read data from string\n";string dataString ="%YAML:1.0\n""mdata:\n"" A: 97\n"" X: 3.1415926535897931e+00\n"" id: mydata1234\n";MyData m;FileStorage fs(dataString, FileStorage::READ | FileStorage::MEMORY);cout << "attempting to read mdata_b from string\n"; //Show default behavior for empty matrixfs["mdata"] >> m;cout << "read mdata\n";cout << m << endl;}//write to string{cout << "Write data to string\n";FileStorage fs(filename, FileStorage::WRITE | FileStorage::MEMORY | FileStorage::FORMAT_YAML);cout << "writing MyData struct\n";MyData m(1);fs << "mdata" << m;cout << m << endl;string createdString = fs.releaseAndGetString();cout << "Created string:\n" << createdString << "\n";}return 0;
}
opencv中xml/yml文件操作类相关推荐
- asp。net中常用的文件操作类
** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; using ...
- OpenCV中XML文件和YAML文件的读写
OpenCV中XML文件和YAML文件的读写 代码如下: #include <opencv2/core/core.hpp> #include <iostream> #inclu ...
- java中的文件处理io_Java的IO前奏曲:文件操作类之___File
Java的IO前奏曲:文件操作类之___File 在java.io包里面,File类是唯一一个与文件本身操作有关的类,但是不会涉及到文件本身的具体内容(包括文件创建,删除等操作) 代码中的注释有详细说 ...
- Java学习总结:41(文件操作类:File)
Java文件操作类:File 在java.io包中,如果要进行文件自身的操作(例如:创建.删除等),只能依靠java.io.File类完成. File类的常用操作方法 No. 方法 类型 描述 1 p ...
- ASP.NET 文件操作类
1.读取文件 2.写入文件 using System; using System.Collections.Generic; using System.IO; using System.Linq; us ...
- 【MFC】学习笔记:文件操作类——CFile
01.目录 目录 01.目录 02.CFile类概述 03.CFile类成员函数 04.两个案例 4.1 实例1 4.2 实例2 05.CFile类总结 02.CFile类概述 如果你学过C语言,应该 ...
- Python中的File(文件)操作
Python中的File(文件)操作 针对磁盘中的文件的读写.文件I/O I 输入(input) O输出(Output) 文件操作步骤:1.打开文件 2.读写文件 3.关闭文件 写入文件的操作:(把大 ...
- php文件写入生成文件,PHP 文件操作类(创建文件并写入) 生成日志
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 PHP 文件操作类(创建文件并写入) 生成日志 /** * 文件操作(生成日志)支持多条插入 * (如果插入多条语句并换行 ...
- php点击按钮创建文件,PHP 文件操作类(创建文件并写入) 生成日_php
path = $path; } //判断操作方式 a追加写 if (! empty ( $mode )) { $this->mode = $mode; } //判断写入的内容 if (! emp ...
最新文章
- java ip包_java网络抓ip包 首部是个什么情况
- 大型EAI项目中的ORACLE 数据库管理(ZT)
- FFMpeg语法参数中文参考手册
- [BZOJ] 1712: [Usaco2007 China]Summing Sums 加密
- python递归遍历目录_Python实现递归遍历文件夹并删除文件
- 逗号,句号。问号?叹号!顿号、冒号:人名分隔·
- 如何实现手动指定AOP实现JDK代理模式到CGLIB的更改?
- 杭电ACM 第2007题
- 云栖·武汉峰会 | 现场:阿里云为何频打“自研”牌?
- (十)统计表速查(标准正态分布、t分布、卡方分布)
- Python瞎搞自学笔记
- 使用Python统计历年来各种英语高考题中单词的出现频数
- 如何在网上回复负面评论
- js加mysql写邮箱找回密码_邮箱找回密码 · woyong/docs Wiki · GitHub
- springMVC的大体结构及工作流程
- 大白话5分钟带你走进人工智能-第七节梯度下降之梯度概念和梯度迭代过程(2)
- 修改Oracle序列值
- java ajax 联动菜单_二级联动菜单代码(AJAX JAVA).
- Pentaho Data Integration(Kettle) 6.0
- 联想笔记本电脑键盘灯怎么开启_联想的键盘灯怎么开_联想笔记本键盘亮灯按哪个键-win7之家...