0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenCV中YAML配置文件读写使用演示

OpenCV学堂 来源:OpenCV学堂 2023-08-01 11:14 次阅读

前言

我们在做OpenCV开发的时候经常需要把算法在一些场景下的调试好的参数作为默认值保存然后自动加载,然后在默认值的基础上根据需要适度调整。OpenCV中支持把参数保存为TXT格式的YAML文件,实现类似XML与JSON的参数文件读写,主要是基于FileStorage这个类完成。

FileStorage类介绍

FileStorage类是OpenCV封装的支持读写XML、JSON、YAML文件的工具类。有多个构造函数支持创建实例,最常用的创建方式如下:

cv::FileStorage(
const String & filename,
int flags,
constString&encoding=String()
)

各个参数的解释意义如下:

filename 表示读写的文件名称

flags表示文件类型cv::Mode,当前支持的模式包含:

7ce7830c-3019-11ee-9e74-dac502259ad0.png

写入

写入文本内容的函数是write,支持不同类型函数的重载,支持的数据类型包含int、double、string等,OpenCV C++支持直接通过操作符<<重载实现写入。

读出

FileStroage通过操作符重载实现读出各种数据类型,通过在Python SDK支持通过getNode方式完成参数数据读出。OpenCV C++ 支持通过操作符>>重载实现读出。

释放文件

FileStorage读写完成之后,必须通过release方法实现文件资源释放。

C++代码演示

从YAML文件中读出数据

// 加载参数
cv::FileStorage fs(fileName, cv::READ);
if (!fs.isOpened()) {
    std::cout<< "could not find the parameters config file..." <> this->onnxModelPath;
fs["labelmapPath"] >> this->labelmapPath;
fs["score"] >> this->score;
fs["confidence"] >> this->conf;
fs["nms"] >> this->nms;
fs["mode"] >> this->mode;
fs["showFPS"] >> this->showFPS;
fs["showLabel"] >> this->showLabel;
fs["showBox"] >> this->showBox;
fs["showMask"]>> this->showMask;
fs.release();
把数据保存为YAML文件
// 保存参数
cv::FileStorage fs(fileName, cv::WRITE);
fs << "onnxModelPath" << this->onnxModelPath;
fs << "labelmapPath" << this->labelmapPath;
fs << "score" << this->score;
fs << "confidence" << this->conf;
fs << "nms" << this->nms;
fs << "mode" << this->mode;
fs << "showFPS" << this->showFPS;
fs << "showMask" << this->showMask;
fs << "showLabel" << this->showLabel;
fs << "showBox" << this->showBox;
fs.release();

Python代码演示

OpenCV-Python SDK实现YAML文件读写的示例如下:

importcv2ascv

param1=25
param2=0.25
param3="lena.jpg"

#写文件
model_settings=cv.FileStorage("mytest.yaml",cv.FILE_STORAGE_WRITE)
model_settings.write('version','v1.0')
model_settings.write('author','gloomyfish')
model_settings.write('param1',param1)
model_settings.write('param2',param2)
model_settings.write('param3',param3)
model_settings.release()

#读文件
cv_setting=cv.FileStorage("mytest.yaml",cv.FileStorage_READ)
param1=cv_setting.getNode('param1').real()
param2=cv_setting.getNode('param2').real()
param3=cv_setting.getNode('param3').real()
YAML文件内容截图:

7d20453e-3019-11ee-9e74-dac502259ad0.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4586

    浏览量

    92465
  • 文件
    +关注

    关注

    1

    文章

    560

    浏览量

    24661
  • OpenCV
    +关注

    关注

    29

    文章

    624

    浏览量

    41206
  • JSON
    +关注

    关注

    0

    文章

    116

    浏览量

    6929
  • YAML
    +关注

    关注

    0

    文章

    21

    浏览量

    2311

原文标题:OpenCV中YAML配置文件读写使用演示

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求助,无法找到rdquo;OpenCV ldquo提供的封装配置文件求分享

    运行下列命令以构建 Open Model Zoo 遇到以下错误: 无法找到 OpenCV* 提供的带有以下名称的软件包配置文件: OpenCVConfig.cmake opencv-config.cmake
    发表于 08-15 06:43

    xml和YAML文件的写入_OpenCV3编程入门

    OpenCV3编程入门》书本配套源代码:xml和YAML文件的写入
    发表于 06-06 15:20 6次下载

    xml和YAML文件的读取_源代码

    OpenCV3编程入门》书本配套源代码:xml和YAML文件的读取
    发表于 06-06 15:20 6次下载

    OpenCV3编程入门-源码例程全集-xml和YAML文件的读取

    OpenCV3编程入门-源码例程全集-xml和YAML文件的读取
    发表于 09-18 16:38 0次下载

    OpenCV3编程入门-源码例程全集-xml和YAML文件的写入

    OpenCV3编程入门-源码例程全集-xml和YAML文件的写入
    发表于 09-18 16:38 0次下载

    ICD配置文件的详细介绍和配置内容的详细概述

    配置文件配置文件是利用SCL语言描述变电站设备对象模型后生成的文件,用于在不同厂商的配置工具之间交换配置信息。
    的头像 发表于 06-02 11:16 1.8w次阅读
    ICD<b class='flag-5'>配置文件</b>的详细介绍和<b class='flag-5'>配置</b>内容的详细概述

    AD8283评估板设计和配置文件

    AD8283评估板设计和配置文件
    发表于 05-31 16:04 9次下载
    AD8283评估板设计和<b class='flag-5'>配置文件</b>

    labview读写配置文件实例分享

    labview读写配置文件实例分享
    发表于 11-01 16:05 45次下载

    KT142C语音芯片配置文件总是不起作用?配置文件的问题集中归纳

    KT142C语音芯片配置文件总是不起作用?配置文件的问题集中归纳
    的头像 发表于 10-20 15:04 522次阅读
    KT142C语音芯片<b class='flag-5'>配置文件</b>总是不起作用?<b class='flag-5'>配置文件</b>的问题集中归纳

    linux修改网卡ip配置文件

    、子网掩码、网关等参数。本文将详细介绍如何修改Linux的网卡ip配置文件。 首先,在Linux,网络接口的配置文件一般位于/etc/sysconfig/network-scripts/目录下,
    的头像 发表于 11-17 10:51 2073次阅读

    ROS编写参数配置文件示例程序

    _config.yaml这三个文件,这三个文件均位于下图所示的目录下,下面依次进行详细的介绍 1、编写user_config.yaml
    的头像 发表于 11-26 17:35 1490次阅读
    ROS编写参数<b class='flag-5'>配置文件</b>示例程序

    springboot的全局配置文件有几种

    Spring Boot是一种快速开发框架,其通过提供配置文件来实现对应用程序的配置。全局配置文件在Spring Boot起着非常重要的作用,可以用于
    的头像 发表于 12-03 15:28 1478次阅读

    springboot的核心配置文件有哪些

    的工作量。 Spring Boot的核心配置文件主要有以下几个: application.properties:Spring Boot应用程序的主要配置文件。它使用Java的键值对格式来定义各种配置属性
    的头像 发表于 12-03 15:30 1112次阅读

    zookeeper的核心配置文件是什么

    Zookeeper是一个常用的分布式协调服务,它被广泛应用于大型分布式系统。Zookeeper的核心配置文件是zoo.cfg,它包含了Zookeeper服务器的各种配置参数,可以通过修改这些参数
    的头像 发表于 12-04 10:33 704次阅读

    php的配置文件是什么

    PHP的配置文件是一种用于配置PHP解释器的文本文件。它包含了一系列的指令和选项,用于影响PHP的行为和性能。通过修改配置文件,可以改变PHP解释器的默认行为,从而满足不同的需求。 在
    的头像 发表于 12-04 15:55 1434次阅读