OpenCV中XML与YAML文件读取

opencv2-XML和YAML文件的读取 XML和YAML文件的读取 阅读详情

XML与YAML文件读取

参考《OpenCV3编程入门》
1、说明;
2、Code;
3、效果;

说明

1、XML:可扩展标识语言,开发者可以根据自己的需要定义定义自己的标记,是一种语义/结构化语言;
2、YAML : 一种置标语言,强调语言以数据为中心,而不是以置标语言为中心,是一个可读性高,用来表达资料序列的格式;
3、XML与YAML是使用非常广泛的文件格式,可以利用XML或者YAML格式的文件存储和还原各式各样的数据结构,包括OpenCV的相关数据结构,以及各种原始数据类型,如整数,浮点数,文本字符串;
4、使用步骤:
①实例化FileStorage类对象,用默认带参构造函数完成初始化,或者调用open()方法;
②使用流操作符<< 或>>进行读写操作;
③调用release()函数析构FileStorage类对象;
5、demo:

//write
FileStorage fs("abc.xml" , FileStorage::WRITE);
//or
FileStorage fs;
fs.open("abc.xml" , FileStorage::WRITE);
//read
FileStorage fs;
fs.open("abc.xml", FileStorage::WRITE);
//1、文本和数字输入
fs << "iterationNr" << 100;
int itNr;
fs["iterationNr"] >> itNr;
itNr = (int) fs["iterationNr"];
//2、OpenCV中 数据结构输入输出同C++基本类型一样
Mat R = Mat_<uchar>:: eyes(3 , 3);
Mat T = Mat_<double> :: zeros(3,1);
//write
fs << "R" << R;
fs<< "T" << T;
//read
fs["R"] >> R;
fs["T"] >> T;
//3、vector与maps类型输入输出
//vector 结构的输入与输出,在第一个元素前加"[",最后一个元素前加"]"
fs << "strings" << "[";
fs << "image1.jpg" << "Awesomeness" << "baboon.jpg";
fs << "]";  //关闭序列
//序列结构,使用“{”  “}”
fs << "Mapping";
fs << "{" << "One" << 1;
fs << "Two" << 2 << "}";

FileNode n = fs["strings"];  
if(n.type() != FileNode::SEQ)
{
	cerr << "发生错误!字符串不是一个序列! "  << endl;
	return 1;
}
//对于一连串的node,可以使用FileNodeIterator结构
 FileNodeIterator it = n.begin() , it_end = n.end();
 for(; it != it_end; ++it)
 {
 	cout << (string) * it << endl;
 }

Code

#include <opencv2/opencv.hpp>
#include <iostream>
#include <time.h>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	//改变console字体颜色
	system("color 6F");

	//初始化
	FileStorage fs("test.yaml", FileStorage::READ);
	
	//读取文本内容
	int frameCount = (int)fs["frameCount"];
	string date;
	fs["calibrationDate"] >> date;

	Mat cameraMatrix2, distCoeffs2;

	fs["cameraMatrix"] >> cameraMatrix2;
	fs["distCoeffs"] >> distCoeffs2;

	cout << "frameCount: " << frameCount << endl
		<< "calibration Date: " << date << endl
		<< "cameraMatrix: " << cameraMatrix2 << endl
		<< "distCoeffs: " << distCoeffs2 << endl;

	FileNode features = fs["features"];
	FileNodeIterator it = features.begin(), it_end = features.end();
	int idx = 0;
	vector<uchar> lbpval;
	
	//使用FileNodeIterator遍历序列
	for (; it != it_end; it++,idx++)
	{
		cout << "feature #" << idx << ": ";
		cout << "x=" << (int)(*it)["x"] << ", y=" << (int)(*it)["y"] << ", lbp: (";
		(*it)["lbp"] >> lbpval;

		for (int i = 0; i < (int)lbpval.size(); i++)
		{
			cout << " " << (int)lbpval[i];
		}
		cout << ")" << endl;
	}

	fs.release();  //关闭文件

	printf("\n文件读取完毕,请输入任意键结束程序~");
	getchar();

	return 0;
}

/*
//文件写操作
int main(int argc, char** argv)
{
	//初始化
	FileStorage fs("test.yaml", FileStorage::WRITE);
	if (!fs.isOpened())
	{
		cout << "文件打开失败....";
	}

	//开始写入文件
	fs << "frameCount" << 5;
	//获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,
	//其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数
	time_t rawtime; time(&rawtime); 
	fs << "calibrationDate" << asctime(localtime(&rawtime));

	Mat cameraMatrix = (Mat_<double>(3, 3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1);
	Mat distCoeffs = (Mat_<double>(1, 5) << 0.1, 0.01, -0.001, 0, 0);
	//读入参数
	fs << "cameraMatrix" << cameraMatrix << "distCoeffs" << distCoeffs;

	fs << "features" << "[";
	for (int i = 0; i < 3; i++)
	{
		int x = rand() % 640;
		int y = rand() % 480;
		uchar lbp = rand() % 256;

		fs << "{:" << "x" << x << "y" << y << "lbp" << "[:";
		for (int j = 0; j < 8; j++)
		{
			fs << ((lbp >> j) & 1);
		}
		fs << "]" << "}";
	}

	fs << "]";
	
	fs.release();
	printf("文件读写完毕,请在工程目录下查看生成的文件~");	
	getchar();
	return 0;
}
*/

运行结果

!!需要注意文件夹一定具有可写权限,否则text.yaml文件无法正常写入。
在这里插入图片描述
在这里插入图片描述

OpenCV xml与yaml文件使用 本文是基于毛星云主编的opencv 3编程入门(顺便推荐一下,这本书写的浅显易懂,看完之后,基本操作也都学的差不多了。Opencv3.3.1是本人使用的版本,其中的操作api有些已经更改,现在这里提一下),也算是自己画的重点吧。 XML(eXtensible Markup Language):元标记语言 YAML:出现是为了尝试比XML更为便捷,完成XML的任务 写入或读取XML或YAML文... 阅读详情

相关推荐

opencv学习(十四)XML//YAML的读取和写入(同理可用txt,doc替代)//涉及FileStorage()//读写符号//FileNodeIterator()得到节点

xml,yaml介绍 如何使用 步骤一,FileStorage()打开(读/写前的准备,定义) 步骤二,读写操作函数(符号) 步骤三,vector/maps类型输入输出,FileNodeIterator读取字符串的得到节点 步骤四,关闭文件 实例,xml,yaml文件写入 #include&lt;opencv2/opencv.hpp&gt;...

Zeking的博客 1611

OpenCV中读取YAML文件方法

在CV处理中,一般要用到一个甚至多个相机参数,所谓的相机参数,也就是指相机外参、内参、畸变参数等,它们一般以矩阵的形式存在,如果都写在代码里面,一来显得臃肿拖沓,二来也不方便修改参数,OpenCV提供了YAML文件扩展配置的功能,也就是FileStorage类,下面用一段代码展示它的基本用法。下面这个YAML文件中按顺序存储了四个相机的内参和畸变参数:%YAML:1.0 calibrateTime:

发现问题,解决问题. 7715

C++ 读取文本

一、读取txt文本 使用文件流fstream以及stringstream。 fstream和stringstream都继承自iostream。 按数据的存储顺序依次读取: a)一次读取一行或者读取到指定分隔符: getline() ; b) 每次读取以空格或者换行符为分割:>> ; #include <fstream> //fstream类继承自iost...

yly的博客 2213

OpenCV C++读写XML或YAML文件

本节我们将认识XML和YAML这两种文件类型。 所谓XML,即eXtensible Markup Language,翻译成中文为“可扩展标识语言”。首先,XML是一种元标记语言。所谓元标记,就是开发者可以根据自身需要定义自己的标记,比如可以定义标记<book>、<name>。任何满足XML命名规则的名称都可以标记,这就向不同的应用程序打开了的大门。此外,XML是一种语义、结构化语言,它描述了文档的结构与语义。 YAML是YAML Ain’t a Markup Language(YA

weixin_43229348的博客 2860

Vivado项目开发新思路:用VSCode写代码,用Vivado管理IP核与综合(Windows/Mac环境通用指南)

本文介绍了如何结合Vivado和VSCode的优势,打造高效的FPGA设计工作流。通过配置VSCode的Verilog插件和Vivado环境集成,开发者可以在VSCode中编写代码,同时利用Vivado管理IP核与综合,显著提升开发效率和团队协作体验。

weixin_42545503的博客 336

【Java】JAVA知识总结浅析

Java是一门功能强大的编程语言,广泛应用于多个领域。Java的编程思想,包括面向过程和面向对象编程,Java的发展历史,各版本的特点,JVM原理,数据类型,Java SE与Java EE的区别,应用场景,JDK与JDBC,Java Web技术,Spring Boot系列,以及MyBatis框架的基本实现,最后还将讨论Java在大数据、人工智能、嵌入式和Android等领域的应用。

wnm23的专栏 5212

Opencv——写入或读取数据到XML或YAML文件

什么是XML、YAML文件 XML(eXtensible Markup Language)是一种元标记语言。所谓“原标记”,就是开发者可以根据自身需要定义的标记,任何满足XML命名规则的名称都可以标记。此外,XML是一种语义/结构化语言,它描述了文档的结构和语义。   YAML(YAML Ain’t a Markup Language)也是一种置标语言,但它是以数据为中心,而不是以置标语言为重点,...

hanhan的博客 1741

PLC与变频器联动控制:从开关量、模拟量到通讯的接线与编程实战

在工业自动化系统中,电机调速控制是核心需求之一,其关键在于实现可编程逻辑控制器(PLC)与变频器之间的可靠联动。其基本原理是通过PLC输出控制信号,由变频器接收并驱动电机按设定速度运行。这项技术的核心价值在于实现电机的软启停、精确调速与节能控制,广泛应用于风机、水泵、传送带及精密张力控制等场景。其中,开关量控制以其接线简单、抗干扰能力强的特点,成为基础且可靠的方案;而模拟量控制则能实现无级平滑调速,满足更高精度的工艺要求。本文以西门子、三菱等主流品牌为例,深入解析了这两种主流控制方式的硬件接线、参数设置与梯

1268

OpenCV 读写 YAML/XML 文件

本篇博客将深入探讨如何使用OpenCV库批量读写YAML和XML文件,这对于处理大规模数据集、配置参数保存与加载以及跨平台数据交换等场景具有极高的实用价值。博客首先概述了OpenCV库在图像处理领域的广泛应用,并强调了文件批量处理的重要性。接着,详细介绍了如何使用OpenCV的FileStorage类进行YAML和XML文件的读写操作,包括文件创建、数据写入、读取解析等关键步骤。此外,博客还提供了多个实例代码,展示了如何在实际项目中应用这些技术,解决具体的数据处理问题。

人无远虑,必有近忧 1448

斗鱼直播间弹幕爬虫实战:WebSocket连接与实时数据采集

在数据驱动的时代,直播平台的弹幕数据蕴含着巨大的价值——用户行为分析、舆情监控、弹幕情感分析、直播热度评估等应用场景层出不穷。斗鱼作为国内领先的直播平台,其弹幕系统基于WebSocket协议实现实时双向通信。本文将带您从零开始,使用Python构建一个完整的斗鱼直播间弹幕爬虫系统。

2201_76125261的博客 134

使用自制的NTC测量模块测试Plecs的热仿真效果

可以测试:您完全可以用这个模型来测试热仿真。NTC 模型是连接电气域和热域的关键桥梁。实现闭环:通过这种方式,您创建了一个高度真实的正反馈闭环系统:负载增加 -> 损耗增加 -> 温度升高 -> NTC 阻值变化 -> 控制电路可能因此调整(如降低频率或电流)-> 损耗变化 -> 温度变化。应用场景:这对于设计过温保护 (OTP) 电路风扇控制系统以及分析热失控条件非常有用。单位:确保热域中使用的单位( Kelvin 或 Celsius )与您的 C-Script 模型输入期望的单位一致。

311

C++ OpenCV中读取YAML文件的详解:定义、用途与实用示例

在计算机视觉和图像处理领域,OpenCV(Open Source Computer Vision Library)是一个广泛使用的开源库。YAML(YAML Ain’t Markup Language)作为一种简洁且易于阅读的配置文件格式,在OpenCV中被广泛应用于存储和加载配置参数、校准数据、模型参数等。本文将详细解释在C++中如何使用OpenCV读取YAML文件,涵盖其定义、用途、使用方法以及实际示例。定义:YAML是一种人类可读的数据序列化标准,常用于配置文件和数据交换。

m0_73640344的博客 1416

Gromacs 模拟昆虫 P450 解毒酶与农药结合完整指南,仅供参考!

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1238

利用opencv中的类FileStorage生成和读取XML和YAML文件

有时候程序中的变量值、字符串、数组等数据也需要独立于源代码本身保存,这个时候就需要用到XML和YMAL文件进行保存。 OpenCV4提供了用于生成和读取XML文件和YMAL文件的类FileStorage,该类的构造函数原型有两 ...

昊虹AI笔记 5565

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1933

24届数字IC验证——SV+UVM基础知识汇总(一)

汇总整理在面试过程中常见的问题,如果都能回答下来,那么面试肯定不成问题的分别构建不同抽象级的transaction,来实现复杂的激励。(以前是单一层次的sequence,对激励复用、上层复用不塌友好)不同层级之间的sequence没有继承关系,相互之间进行转换低层次的sequence从高层次的sequencer中获取高层次的sequence,并将其转换为低层次的sequence,再通过低层次的sequencer发送出去如何连接:低层次的sequencer包含高层次sequencer的句柄。

qq_42135020的博客 3145

OpenCV XML和YAML文件的写入和读取

一. 实验描述用OpenCV来进行XML和YAML文件的写入和读取。二. 实验代码//XML和YAML文件的写入 class Task11 { public: void deal() { FileStorage fs("test.xml", FileStorage::WRITE); // FileStorage fs("test.yaml", FileStor

whai的专栏 1108

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

opencv写入读取xml、yaml文件

opencv写入读取xml、yaml文件

m0_60346726的博客 239

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

毛星云Opencv之XML和YAML文件的读取

#include <opencv2/opencv.hpp> #include<opencv2/core/core.hpp> #include"opencv2/highgui/highgui.hpp" #include<opencv2/imgproc/imgproc.hpp> #include<iostream> #include<time.h> using namespace std; using namespace cv; ...

weixin_52634719的博客 149

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

opencv C艹:读取视频文件,保存图像,视频文件,读取保存XML YAML文件

Mat, mat的构造方法,元素的读取,图片的读取和显示,数据保存,视频的保存,保存读取XML, YMAL文件。

AI路漫漫 768

openCV学习笔记(十九) —— XML和YAML文件的写入和读取

以下程序来源于《opencv3入门经典》 XML和YAML文件的写入 #include&lt;opencv2/opencv.hpp&gt; #include &lt;vector&gt; #include &lt;time.h&gt; using namespace std; using namespace cv; int main() { //初始化 FileStorage fs(...

天空的博客 1万+

opencv c++函数 基础9 输入输出XML和YAML文件

目的 你将得到以下几个问题的答案: 如何将文本写入YAML或XML文件,及如何从从OpenCV中读取YAML或XML文件中的文本如何利用YAML或XML文件存取OpenCV数据结构如何利用YAML或XML文件存取自定义数据结构?OpenCV中相关数据结构的使用方法,如 :xmlymlpers:FileStorage , FileNode 或 FileNodeIterator.

CV菜鸟的学习之路 1454

OpenCV使用XML文件读写Mat数据

OpenCV有时想把Mat数据(比如一个小小的矩阵)保存到文件中,然后在其他地方读入使用怎么办呢? FileStorage是opencv中XML和YAML文件的存储类。 1. 写XML操作完整代码 Mat cameraMatrix = Mat(3, 3, CV_32FC1, Scalar::all(0)); //初始化Mat /***********对Mat进行操作,赋值等等***************/ cv::FileStorage fs("cameraMatrix.xml", cv::F

qq_41951658的博客 1003

XML和YAML文件的读取

//--------------------------------------【程序说明】------------------------------------------- // 程序描述:XML和YAML文件的读取 // 开发测试所用操作系统: Windows 7 64bit // 开发测试所用IDE版本:Visual Studio 2010 // 开发测试所用OpenCV版本:

北漠苍狼的专栏(QQ:1746430162) 1262

OpenCV:YAML vs XML格式文件的读写操作

参考文章:Opencv YAML和XML格式文件操作详解 YAML格式的文件拓展名包括:.yml 和 .yaml; XML格式的文件拓展名为: .xml; 在OpenCV中,使用FileStorage进行文件读写。XML文件操作与YAML一样,不过存在一些细小差别。 // write file保存数据 cv::FileStorage fs(fileName,cv::FileStorage::WRIT

SSS_369 704

C++版本OpenCv教程(九)保存和读取XML和YMAL文件

除了图像数据之外,有时程序中的尺寸较小的Mat类矩阵、字符串、数组等 数据也需要进行保存,这些数据通常保存成XML文件或者YAML文件。本小节中将介绍如何利用OpenCV 4中的函数将数据保存成XML文件或者YAML文件以及如何读取这两种文件中的数据。 XML是一种元标记语言,所谓元标记就是使用者可以根据自身需求定义自己的标记,例如可以用、等标记来定义数据的含义,例如用24来表示age数据的数值为24。XML是一种结构化的语言,通过XML语言可以知道数据之间的隶属关系,例如100150表示在color数据中

qq_33287871的博客 1598
上一篇: 使用OpenCV完成单目相机矫正
下一篇: 立体视觉-opencv中立体匹配相关代码(BM,SGBM,GM参数解释)
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值