FileStorage函式學習記錄

2021-10-08 09:12:53 字數 2595 閱讀 9020

前言,筆者在閱讀開源**時,遇到忘記的opencv提供的對檔案操作的函式filestorage,特此記錄學習。

1.xml和yaml的簡介

xml,即extensible markup language(可擴充套件標識語言)。是一種元標記語言。

元標記語言是開發者可以根據自身需要定義自己的標記。yaml,是乙個可讀性高,用來表達資料序列的格式。

注:.yml和 .yaml同為yaml格式的字尾名

2.了解filestorage 類

filestorage是opencv中xml和yaml檔案的儲存類,封裝了所有相關的資訊。它是opencv從檔案中讀資料或向檔案中寫資料事必須要使用的乙個

類。filestorage建構函式

不帶引數:

filestorage()
帶引數:

filestorage

(const string& source,

int flags,

const string& encoding=

string()

);

引數解釋:

const string& source:要開啟的檔案的源名或要從中讀取資料的文字字串;

檔名(.xml、.yml/.yaml或.json)決定其格式(分別為xml、yaml或json)

const string& encoding=string():編碼檔案的編碼。請注意,目前不支援utf-16 xml編碼,並且應該使用8位編碼。

舉個例子:

寫:帶引數:

filestorage fs("a.mxl"

,filestorage::write)

;//用寫入的模式開啟a.mxl檔案

不帶引數:

filestorage fs;

fs.open

("a.xml"

,filestorage::write)

;

讀:

filestorage fs

("a.xml"

,filestorage::read)

//用寫入的模式開啟a.mxl檔案

filestorage fs;

fs.open

("a,xml"

,filestorage::read)

;

(2)進行檔案讀寫操作

①文字數字的輸入和輸出

寫入:

fs<<

"iterationnr"

<<

100;

在fs裡寫入iterationnr值為100

這裡要解釋以下xml檔案的結構

xml檔案結構

①xml檔案的第一行為xml檔案說明,一般說明了xml的版本和編碼資訊;

如圖中的

<

? xml version=

"1.0"

?>

藍色框內就是子節點

總截屏為:

讀取:int itnr;

fs[「iterationnr」]>>itnr;

itnr =(int) fs[「iterationnr」];

此處以mat資料型別為例:

②opencv資料結構的輸入和輸出

//資料結構初始化

mat r = mat_::eye(3,3);

mat t = mat_::zeros(3,1);

//向mat中寫入資料

fs << 「r」 << r;

fs << 「t」 << t;

//從mat中讀取資料

(3)vector(arrays)和maps的輸入和輸出

對於vector結構的輸入和輸出,要注意在第乙個元素前加『 [ 』,在最後乙個元素前加上

『 ] 』。

對於map結構的操作,使用的符號是『 』。

(4)檔案關閉

檔案關閉操作會在filestorage類銷毀時自動進行,但我們也可顯式呼叫其析構函式filestorage::release()實現。filestorage::release()函式會析構掉filestorage類物件

例如:fs.rellease();

總結:filestorage是opencv中對xml和yaml檔案進行操作的儲存類,可以對檔案進行讀入,寫入,追加,值得注意的是mat存入的結構的矩陣形式。

linux fork 函式學習

分類 專業學習 include include include int main case 0 default printf n d n n return 0 輸出結果1 fork child i am child parent i am parent parent getpid 4496 pare...

RecalcLayout 函式學習

1 它是用來將 dialogbar等可浮動的東西安排位置 處理和view frame之間的位置關係的,例如你直接用m wnd showwindow wm hide 隱藏了工具條,那就最好呼叫這個函式重新安排一下剩下的bar和view之間的位置 2 recalclayout是cframewnd定義的虛...

htonl 函式學習

今天在網上看到一篇關於htonl 函式的解釋,感覺有道理,貼過來大家一起學習 htonl就是把本機位元組順序轉化為網路位元組順序 h host 本地主機 to 就是to 了 n net 網路的意思 l 是 unsigned long 所謂網路位元組順序 大尾順序 就是指乙個數在記憶體中儲存的時候 高...