cv::FileStorage用法

cv::FileStorage 是 OpenCV 中的一個類,用于讀取和寫入結構化數據(如 YAML、XML、JSON)。它非常適合保存和加載諸如:

  • 相機內參(KD

  • 位姿(RT

  • IMU 數據

  • 配置參數

  • 向量、矩陣、圖像、列表等


📦 常見用途

  • 保存相機標定參數(標定后得到的 .yml 文件)

  • 配置文件讀寫(如 SLAM、AR、CV 項目)

  • 記錄檢測結果或軌跡數據


📘 使用示例

? 1. 寫入 YAML 文件

#include <opencv2/opencv.hpp>
using namespace cv;int main() {FileStorage fs("camera.yml", FileStorage::WRITE);Mat K = (Mat_<double>(3,3) << 1000, 0, 640,0, 1000, 360,0, 0, 1);Mat D = (Mat_<double>(1,5) << 0.1, -0.05, 0, 0, 0);fs << "camera_matrix" << K;fs << "distortion_coefficients" << D;fs.release();return 0;
}

寫出的文件 camera.yml

%YAML:1.0
camera_matrix: !!opencv-matrixrows: 3cols: 3dt: ddata: [1000, 0, 640, 0, 1000, 360, 0, 0, 1]
distortion_coefficients: !!opencv-matrixrows: 1cols: 5dt: ddata: [0.1, -0.05, 0, 0, 0]

? 2. 讀取 YAML 文件

#include <opencv2/opencv.hpp>
using namespace cv;int main() {FileStorage fs("camera.yml", FileStorage::READ);Mat K, D;fs["camera_matrix"] >> K;fs["distortion_coefficients"] >> D;std::cout << "K =\n" << K << std::endl;std::cout << "D =\n" << D << std::endl;fs.release();return 0;
}

? 支持的數據類型

  • 基本類型:int, float, double, std::string

  • 容器:std::vector, cv::Mat, cv::Point, cv::Size, cv::Rect, cv::Scalar

  • 嵌套結構、映射(通過 {}[]

  • JSON 格式(OpenCV ≥ 3.0 支持)


🧪 典型應用場景

場景示例
相機標定保存相機內參到 .yml/.xml 文件
SLAM配置加載參數如圖像大小、頻率等
多視圖幾何存儲基礎矩陣、變換矩陣
校準/跟蹤系統保存歷史軌跡、估計姿態數據

? 文件格式支持

格式后綴Open 方法
YAML.yml, .yamlFileStorage("file.yml", FileStorage::READ)
XML.xml同上
JSON.json需要 OpenCV 支持 JSON 的版本(≥3)

🚨 注意事項

  • 讀取后記得 .release() 釋放文件

  • 文件路徑要正確,尤其在嵌入式/移動設備上

  • 大文件建議使用 JSON 或 YAML,避免 XML 臃腫


📌 總結

功能cv::FileStorage 優勢
讀寫結構化數據一行代碼搞定 YAML、XML 或 JSON
支持豐富數據類型向量、矩陣、圖像、字典、數組
易于配置與共享常用于校準參數存儲、SLAM配置等
C++ 集成度高直接讀取 OpenCV 類型,無需格式轉換

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85726.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85726.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85726.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WebFuture:啟動服務提示Job webfuture.service/start failed with result ‘dependency‘處理辦法

問題分析&#xff1a; 當出現 Job webfuture.service/start failed with result dependency. 這樣的錯誤提示時&#xff0c;通常意味著 webfuture.service 這個服務在啟動時因為依賴關系的問題而未能成功啟動 解決辦法&#xff1a; 原因分析&#xff1a; webfuture.service 可…

Java 大視界 -- Java 大數據機器學習模型在遙感圖像變化檢測中的應用與改進(235)

??親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也期待你毫無保留地分享獨特見解,愿我們于此攜手成長,共赴新程!?? 全網…

HarmonyOS運動開發:精準估算室內運動的距離、速度與步幅

##鴻蒙核心技術##運動開發##Sensor Service Kit&#xff08;傳感器服務&#xff09;# 前言 在室內運動場景中&#xff0c;由于缺乏 GPS 信號&#xff0c;傳統的基于衛星定位的運動數據追蹤方法無法使用。因此&#xff0c;如何準確估算室內運動的距離、速度和步幅&#xff0c;…

商品模塊中的多規格設計:實現方式與電商/ERP系統的架構對比

在商品管理系統中&#xff0c;多規格設計&#xff08;Multi-Specification Product Design&#xff09;是一個至關重要但又極具挑戰性的領域。無論是面向消費者的電商系統&#xff0c;還是面向企業管理的ERP系統&#xff0c;對商品規格的處理方式直接影響庫存管理、訂單履約、數…

HTML 等價字符引用:系統化記憶指南

HTML 等價字符引用:系統化記憶指南 在 HTML 中,字符引用(Character Entity References)用于表示保留字符或特殊符號。我將提供一個系統化的方法來記憶這些重要實體,并解釋它們的實際應用。 什么是等價字符引用? HTML 字符引用有兩種形式: 命名實體:&entity_name…

Java 線程池原理詳解

Java 線程池原理詳解 一、引言 在高并發場景下&#xff0c;頻繁地創建與銷毀線程將帶來極大的性能開銷。為了提升資源復用性與程序響應速度&#xff0c;Java 提供了線程池機制&#xff08;java.util.concurrent 包&#xff09;。線程池通過復用線程、控制線程數量、任務排隊管…

Mybatis入門到精通

一&#xff1a;什么是Mybatis 二&#xff1a;Mybatis就是簡化jdbc代碼的 三&#xff1a;Mybatis的操作步驟 1&#xff1a;在數據庫中創建一個表&#xff0c;并添加數據 我們這里就省略了 2&#xff1a;Mybatis通過maven來導入坐標&#xff08;jar包&#xff09; 3&#xff1a…

化學方程式配平免費API接口教程

接口簡介&#xff1a; 根據反應物和生成物配平化學方程式。 請求地址&#xff1a; https://cn.apihz.cn/api/other/hxfcs.php 請求方式&#xff1a; POST或GET。 請求參數&#xff1a; 【名稱】【參數】【必填】【說明】 【用戶ID】【id】【是】【用戶中心的數字ID&#xff…

Spring學習筆記:Spring的基于注解的XML的詳細配置

按照劉Java的順序&#xff0c;應該是從基于XML的DI開始接著上面的關于IoC容器裝配。主要介紹學習Spring的XML基于注解的詳細配置。 第一步是搭建一個Spring的基礎工程&#xff08;maven管理&#xff09;&#xff0c;通過IoC機制獲取IoC容器的對象。 創建maven工程并在pom文件…

(四)動手實現多層感知機:深度學習中的非線性建模實戰

1 多層感知機&#xff08;MLP&#xff09; 多層感知機&#xff08;Multilayer Perceptron, MLP&#xff09;是一種前饋神經網絡&#xff0c;包含一個或多個隱藏層。它能夠學習數據中的非線性關系&#xff0c;廣泛應用于分類和回歸任務。MLP的每個神經元對輸入信號進行加權求和…

第十三篇:MySQL 運維自動化與可觀測性建設實踐指南

本篇重點介紹 MySQL 運維自動化的關鍵工具與流程&#xff0c;深入實踐如何構建高效可觀測體系&#xff0c;實現數據庫系統的持續穩定運行與故障快速響應。 一、為什么需要 MySQL 運維自動化與可觀測性&#xff1f; 運維挑戰&#xff1a; 手動備份容易遺漏或失敗&#xff1b; …

蜜獾算法(HBA,Honey Badger Algorithm)

2021年由Hashim等人提出&#xff08;論文&#xff1a;Honey Badger Algorithm: A New Metaheuristic Algorithm for Solving Optimization Problems&#xff09;。模擬蜜獾在自然界中的智能捕食行為&#xff0c;屬于群體智能優化算法&#xff08;與粒子群PSO、遺傳算法GA同屬一…

Duix.HeyGem:以“離線+開源”重構數字人創作生態

在AI技術快速演進的今天,虛擬數字人正從高成本、高門檻的專業領域走向大眾化應用。Duix.HeyGem 數字人項目正是這一趨勢下的杰出代表。該項目由一支擁有七年AI研發經驗的團隊打造,通過放棄傳統3D建模路徑,轉向真人視頻驅動的AI訓練模型,成功實現了低成本、高質量、本地化的…

HTTP常見的請求方法、響應狀態碼、接口規范介紹

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是Web通信的基礎協議&#xff0c;用于客戶端和服務器之間的請求和響應。本文將詳細介紹HTTP常見的請求方法、響應狀態碼以及接口規范&#xff0c;幫助開發者更好地理解和使用HTTP協議。 一、HTTP請求方法 HTTP請求方…

基于Matlab實現LDA算法

線性判別分析&#xff08;Linear Discriminant Analysis, LDA&#xff09;是一種經典的統計方法&#xff0c;常用于特征降維和分類問題。在機器學習領域&#xff0c; 一、LDA基本原理 LDA的目標是尋找一個投影空間&#xff0c;使得類間距離最大化&#xff0c;同時保持類內距離…

matlab基于GUI實現水果識別

基于GUI實現水果識別系統&#xff0c;限一個圖片內存在一種水果 圖像處理是一種利用計算機分析圖像以達到預期結果的技術。圖像處理一般指數字圖像處理&#xff0c;而數字圖像指由工業相機、攝像機、掃描儀等設備捕捉到的二維數組&#xff0c;數組中的元素稱為像素&#xff0c…

XML 編碼:結構化數據的基石

XML 編碼:結構化數據的基石 引言 XML(可擴展標記語言)作為互聯網上廣泛使用的數據交換格式,已經成為結構化數據存儲和傳輸的重要工具。本文旨在深入探討XML編碼的原理、應用場景以及編碼規范,幫助讀者更好地理解和運用XML。 XML編碼概述 1. XML的起源 XML誕生于1998年…

虛擬機無法開啟-關掉虛擬化

這個問題我之前解決過&#xff0c;沒做筆記&#xff0c;這次記錄下&#xff0c;最常見都上開啟bois的cpu虛擬化。 其次是啟動或關閉功能頁面也需要選擇&#xff0c;再就是和wsl都沖突問題&#xff0c;就是今天這個問題 您的主機不滿足在啟用 Hyper-V 或 Device/Credential Gua…

Python數據可視化科技圖表繪制系列教程(二)

目錄 表格風格圖 使用Seaborn函數繪圖 設置圖表風格 設置顏色主題 圖表分面 繪圖過程 使用繪圖函數繪圖 定義主題 分面1 分面2 【聲明】&#xff1a;未經版權人書面許可&#xff0c;任何單位或個人不得以任何形式復制、發行、出租、改編、匯編、傳播、展示或利用本博…

LeetCode算法題 (搜索二維矩陣)Day18!!!C/C++

https://leetcode.cn/problems/search-a-2d-matrix/description/ 一、題目分析 給你一個滿足下述兩條屬性的 m x n 整數矩陣&#xff1a; 每行中的整數從左到右按非嚴格遞增順序排列。每行的第一個整數大于前一行的最后一個整數。 給你一個整數 target &#xff0c;如果 ta…