OpenCV读写YAML/XML文件

news/2024/7/3 1:32:59

1. YAML

1.1. YAML格式

OpenCV识别和YAML格式必须带一个头

%YAML:1.0
---
T_camera_lidar: !!opencv-matrixrows: 4cols: 4dt: ddata: [ -9.9966749413220379e-01, -2.1254345991927007e-02,-1.4599792871676539e-02, -6.2313447310366470e-02,1.5385668712172389e-02, -3.7293338592755410e-02,-9.9918591267835877e-01, -8.5030836669668861e-02,2.0692568079377686e-02, -9.9907830507576378e-01,3.7607950664968470e-02, -5.0560802130224340e-02, 0., 0., 0., 1. ]# 多维数组,几维都可以
overlapping: [[[0, 1088], []],[[0, 1088], [544, 1632]]]

1.2. 载入

#include <opencv2/opencv.hpp>bool load(const std::string& path) {cv::FileStorage file;if (file.isOpened()) {file.release();}file.open(path, cv::FileStorage::READ);if (file.isOpened()) {return true;} else {return false;}
}

1.3. 读取

std::string GetTopicName(const std::string& key) {std::string value;file_["option"] >> value;cv::Mat matrix;file_["matrix"] >> matrix;return static_cast<std::string>(file_[key]);
}

问题记录:当yaml文件中的值为整数时,使用node.isReal()函数判断会返回false

1.4. 写入

FileStorage fs("test.yaml", FileStorage::WRITE);cv::Mat matrix;fs << "matrix" << matrix;fs.release();

2. XML

2.1. 载入

cv::FileStorage fs(path, cv::FileStorage::READ);if (!fs.isOpened()) {std::cout << path << " is not opened" << std::endl;return false;}

2.2. 读取

cv::FileNode shapes = fs["shape"];
cv::FileNode circles = shapes["circle"];
for (const auto& circle : circles) {double x = static_cast<double>(circle["x"]);std::cout << setprecision(15) << x << std::endl;
}

参考文献

OpenCV: cv::FileNode Class Reference


http://lihuaxi.xjx100.cn/news/248480.html

相关文章

Loadrunner进行md5加密方法

本文主要介绍使用Loadrunner进行字符串md5加密的方法。 使用Loadrunner进行md5比较简单&#xff0c;首先是加载md5.h头文件&#xff0c;后使用头文件中的加密函数即可。 1. md5.h头文件内容如下 #ifndef MD5_H #define MD5_H #ifdef __alpha typedef unsigned int uint32; #els…

能和LoadRunner匹敌的VS2010/2012Web负载测试

VS自带的Web负载测试真的很大程度上能和专业的loadrunner媲美&#xff08;只是Web方面&#xff09;&#xff0c;上个report图吧&#xff08;如何实现&#xff0c;请往下拉&#xff09;&#xff1a; 看&#xff0c;能探测一堆的计数器&#xff08;上面红色打叉的是代表超过了基线…

》》视频

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>自定义视频</title><style>* {margin: 0;padding: 0;}font-face {font-family: "iconfont";src: url(iconfont.eot?t1501471609099);/* IE9*/src:…

5.matlab 中的sort

&#xff08;1&#xff09;sort的功能就会排序 默认情况使用升序sort &#xff08;X&#xff0c;DIM&#xff0c;MoDE&#xff09; x是排序的变量 DIM是维度&#xff0c;也就是依据那个维度排序 MORE是排序的方向&#xff1a; ascend 升序 descend降序 &#xff…

Eigen位姿表示

Eigen有多种位姿表示方法&#xff0c;下面依次介绍 1. Isometry3d // 虽然称为3d&#xff0c;实质上是4&#xff0a;4的矩阵&#xff0c;齐次坐标 Eigen::Isometry3d Tc1w Eigen::Isometry3d::Identity();// 按照rotation_matrix进行旋转 Tc1w.rotate(rotation_matrix);// 把…

动软代码生成V2.74模版简介

最近发现很多人用动软代码生成&#xff0c;确实方便&#xff0c;有些经验记录下&#xff0c;以后查看回顾。 ..\Maticsoft\Codematic2\Template\TemplateFile 为模板文件夹&#xff0c;直接在目录下新建文件夹【我的自定义模版】,有个【模版示例.cmt】也直接复制到自定义文件下…

mysql (双主,互主)

Master-Master&#xff08;双主&#xff09; 1、测试环境 Master/Slave Master1/Slave1 IP 192.168.1.13 192.168.1.10 为了保持干净的环境&#xff1a;两边服务器 rm -rf /var/lib/mysql/* service mysqld re…

6. matlab中case语句的使用

&#xff08;1&#xff09;单个的就如同C语言中的一样&#xff0c;不过在和switch使用的时候case后不用接&#xff1a; n input(Enter a number: );switch ncase -1disp(negative one)case 0disp(zero)case 1disp(positive one)otherwisedisp(other value) end&#xff08;2&a…