RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV中YAML配置文件讀寫使用演示

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 2023-08-01 11:14 ? 次閱讀

前言

我們在做OpenCV開發(fā)的時候經(jīng)常需要把算法在一些場景下的調(diào)試好的參數(shù)作為默認值保存然后自動加載,然后在默認值的基礎(chǔ)上根據(jù)需要適度調(diào)整。OpenCV中支持把參數(shù)保存為TXT格式的YAML文件,實現(xiàn)類似XML與JSON的參數(shù)文件讀寫,主要是基于FileStorage這個類完成。

FileStorage類介紹

FileStorage類是OpenCV封裝的支持讀寫XML、JSON、YAML文件的工具類。有多個構(gòu)造函數(shù)支持創(chuàng)建實例,最常用的創(chuàng)建方式如下:

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

各個參數(shù)的解釋意義如下:

filename 表示讀寫的文件名稱

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

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

寫入

寫入文本內(nèi)容的函數(shù)是write,支持不同類型函數(shù)的重載,支持的數(shù)據(jù)類型包含int、double、string等,OpenCV C++支持直接通過操作符<<重載實現(xiàn)寫入。

讀出

FileStroage通過操作符重載實現(xiàn)讀出各種數(shù)據(jù)類型,通過在Python SDK支持通過getNode方式完成參數(shù)數(shù)據(jù)讀出。OpenCV C++ 支持通過操作符>>重載實現(xiàn)讀出。

釋放文件

FileStorage讀寫完成之后,必須通過release方法實現(xiàn)文件資源釋放。

C++代碼演示

從YAML文件中讀出數(shù)據(jù)

// 加載參數(shù)
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();
把數(shù)據(jù)保存為YAML文件
// 保存參數(shù)
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實現(xiàn)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文件內(nèi)容截圖:

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4607

    瀏覽量

    92833
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    565

    瀏覽量

    24727
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    634

    瀏覽量

    41337
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    117

    瀏覽量

    6963
  • YAML
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    2322

原文標題:OpenCV中YAML配置文件讀寫使用演示

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

    運行下列命令以構(gòu)建 Open Model Zoo 遇到以下錯誤: 無法找到 OpenCV* 提供的帶有以下名稱的軟件包配置文件: OpenCVConfig.cmake opencv-config.cmake
    發(fā)表于 08-15 06:43

    xml和YAML文件的寫入_OpenCV3編程入門

    OpenCV3編程入門》書本配套源代碼:xml和YAML文件的寫入
    發(fā)表于 06-06 15:20 ?6次下載

    xml和YAML文件的讀取_源代碼

    OpenCV3編程入門》書本配套源代碼:xml和YAML文件的讀取
    發(fā)表于 06-06 15:20 ?6次下載

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的讀取

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的讀取
    發(fā)表于 09-18 16:38 ?0次下載

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的寫入

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的寫入
    發(fā)表于 09-18 16:38 ?0次下載

    ICD配置文件的詳細介紹和配置內(nèi)容的詳細概述

    配置文件配置文件是利用SCL語言描述變電站設(shè)備對象模型后生成的文件,用于在不同廠商的配置工具之間交換配置信息。
    的頭像 發(fā)表于 06-02 11:16 ?1.8w次閱讀
    ICD<b class='flag-5'>配置文件</b>的詳細介紹和<b class='flag-5'>配置</b>內(nèi)容的詳細概述

    AD8283評估板設(shè)計和配置文件

    AD8283評估板設(shè)計和配置文件
    發(fā)表于 05-31 16:04 ?9次下載
    AD8283評估板設(shè)計和<b class='flag-5'>配置文件</b>

    labview讀寫配置文件實例分享

    labview讀寫配置文件實例分享
    發(fā)表于 11-01 16:05 ?45次下載

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納
    的頭像 發(fā)表于 10-20 15:04 ?572次閱讀
    KT142C語音芯片<b class='flag-5'>配置文件</b>總是不起作用?<b class='flag-5'>配置文件</b>的問題集中歸納

    linux修改網(wǎng)卡ip配置文件

    、子網(wǎng)掩碼、網(wǎng)關(guān)等參數(shù)。本文將詳細介紹如何修改Linux的網(wǎng)卡ip配置文件。 首先,在Linux,網(wǎng)絡(luò)接口的配置文件一般位于/etc/sysconfig/network-scripts/目錄下,
    的頭像 發(fā)表于 11-17 10:51 ?2227次閱讀

    ROS編寫參數(shù)配置文件示例程序

    _config.yaml這三個文件,這三個文件均位于下圖所示的目錄下,下面依次進行詳細的介紹 1、編寫user_config.yaml
    的頭像 發(fā)表于 11-26 17:35 ?1600次閱讀
    ROS編寫參數(shù)<b class='flag-5'>配置文件</b>示例程序

    springboot的全局配置文件有幾種

    Spring Boot是一種快速開發(fā)框架,其通過提供配置文件來實現(xiàn)對應(yīng)用程序的配置。全局配置文件在Spring Boot起著非常重要的作用,可以用于
    的頭像 發(fā)表于 12-03 15:28 ?1563次閱讀

    springboot的核心配置文件有哪些

    的工作量。 Spring Boot的核心配置文件主要有以下幾個: application.properties:Spring Boot應(yīng)用程序的主要配置文件。它使用Java的鍵值對格式來定義各種配置屬性
    的頭像 發(fā)表于 12-03 15:30 ?1163次閱讀

    zookeeper的核心配置文件是什么

    Zookeeper是一個常用的分布式協(xié)調(diào)服務(wù),它被廣泛應(yīng)用于大型分布式系統(tǒng)。Zookeeper的核心配置文件是zoo.cfg,它包含了Zookeeper服務(wù)器的各種配置參數(shù),可以通過修改這些參數(shù)
    的頭像 發(fā)表于 12-04 10:33 ?804次閱讀

    php的配置文件是什么

    PHP的配置文件是一種用于配置PHP解釋器的文本文件。它包含了一系列的指令和選項,用于影響PHP的行為和性能。通過修改配置文件,可以改變PHP解釋器的默認行為,從而滿足不同的需求。 在
    的頭像 發(fā)表于 12-04 15:55 ?1525次閱讀
    RM新时代网站-首页