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

    文章

    4455

    浏览量

    90755
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24402
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40775
  • JSON
    +关注

    关注

    0

    文章

    111

    浏览量

    6817
  • YAML
    +关注

    关注

    0

    文章

    21

    浏览量

    2267

原文标题: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次下载

    FreeRTOS_006_FreeRTOSConfig.h配置文件 (三)

    FreeRTOS_006_FreeRTOSConfig.h配置文件(三)
    的头像 发表于 03-14 11:10 3140次阅读
    FreeRTOS_006_FreeRTOSConfig.h<b class='flag-5'>配置文件</b> (三)

    FreeRTOS_004_FreeRTOSConfig.h配置文件 (一)

    FreeRTOS_004_FreeRTOSConfig.h配置文件(一)
    的头像 发表于 03-14 11:18 2438次阅读
    FreeRTOS_004_FreeRTOSConfig.h<b class='flag-5'>配置文件</b> (一)

    AD8283评估板设计和配置文件

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

    labview读写配置文件实例分享

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

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 03-15 19:39 0次下载
    教程 3:构建自定义<b class='flag-5'>配置文件</b>

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 07-06 18:49 0次下载
    教程 3:构建自定义<b class='flag-5'>配置文件</b>

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

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

    springboot的全局配置文件有几种

    分为两种类型:properties和YAML。Properties文件是一种常见的配置文件类型,它使用键值对的方式
    的头像 发表于 12-03 15:28 485次阅读

    springboot的核心配置文件有哪些

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

    php的配置文件是什么

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