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

前言
    我们在做opencv开发的时候经常需要把算法在一些场景下的调试好的参数作为默认值保存然后自动加载,然后在默认值的基础上根据需要适度调整。opencv中支持把参数保存为txt格式的yaml文件,实现类似xml与json的参数文件读写,主要是基于filestorage这个类完成。
filestorage类介绍
filestorage类是opencv封装的支持读写xml、json、yaml文件的工具类。有多个构造函数支持创建实例,最常用的创建方式如下:
cv::filestorage(const string & filename,int flags,const string & encoding = string())  
各个参数的解释意义如下:
filename 表示读写的文件名称
flags表示文件类型cv::mode,当前支持的模式包含:
写入
写入文本内容的函数是write,支持不同类型函数的重载,支持的数据类型包含int、double、string等,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 python代码演示
opencv-python sdk实现yaml文件读写的示例如下:
import cv2 as cvparam1 = 25param2 = 0.25param3 = 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文件内容截图:


山世光谈深度学习生产线、以及中科视拓深度学习算法平台SeeTaaS
安森美半导体确认对气候变化行动及透明度的承诺
RT-Thread BSP v1.3.0 发布
AMD在桌面处理器以及服务器市场上正在给英特尔带来更大的麻烦
声音传感器工作原理
OpenCV中YAML配置文件读写使用演示
Exact应邀参展首届中国集成电路设计创新大会暨IC应用博览会并做主题演讲
变频器在络筒机上的应用
ES-BRIDGE2——MCU应用开发者的好帮手
区块链切入供应链金融,需要如下步骤
一文解析IGBT驱动器的电流隔离
基于树莓派的无人机飞行控制器设计
说说这些形形式式的接口
中晶科技:单晶硅片的收入占比逐年提高
智能制造产业园区选址的三个关键点
时变通讯安如氏康居监护系统入选工信部《2022年老年用品产品推广目录》
罗克韦尔自动化荣获2023“年度企业 ESG 实践奖”
如何用FPGA实现网络相关的功能
采用I2C总线为控制系统的CD2518彩电的设计与实现
瑞声科技携手小米成立相机联合实验室,探索影像新可能