OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::FileStorage 類參考

XML/YAML/JSON 檔案儲存類,封裝了讀寫檔案所需的所有資訊。 更多...

#include <opencv2/core/persistence.hpp>

cv::FileStorage 的協作圖

公共型別

列舉  模式 {
  讀取 = 0 ,
  寫入 = 1 ,
  追加 = 2 ,
  記憶體 = 4 ,
  格式掩碼 = (7<<3) ,
  自動格式 = 0 ,
  XML 格式 = (1<<3) ,
  YAML 格式 = (2<<3) ,
  JSON 格式 = (3<<3) ,
  BASE64 = 64 ,
  WRITE_BASE64 = BASE64 | WRITE
}
 檔案儲存模式 更多...
 
列舉  狀態 {
  UNDEFINED = 0 ,
  期望值 = 1 ,
  期望名稱 = 2 ,
  在對映中 = 4
}
 

公共成員函式

 FileStorage ()
 建構函式。
 
 FileStorage (const String &filename, int flags, const String &encoding=String())
 
virtual ~FileStorage ()
 解構函式。呼叫 release()
 
void endWriteStruct ()
 完成寫入巢狀結構(應與 startWriteStruct() 配對使用)
 
FileNode getFirstTopLevelNode () const
 返回頂層對映的第一個元素。
 
int getFormat () const
 返回當前格式。
 
virtual bool isOpened () const
 檢查檔案是否已開啟。
 
virtual bool open (const String &filename, int flags, const String &encoding=String())
 開啟一個檔案。
 
FileNode operator[] (const char *nodename) const
 
FileNode operator[] (const String &nodename) const
 返回頂層對映的指定元素。
 
virtual void release ()
 關閉檔案並釋放所有記憶體緩衝區。
 
virtual String releaseAndGetString ()
 關閉檔案並釋放所有記憶體緩衝區。
 
FileNode root (int streamidx=0) const
 返回頂層對映。
 
void startWriteStruct (const String &name, int flags, const String &typeName=String())
 開始寫入巢狀結構(序列或對映)。
 
void write (const String &name, const Mat &val)
 這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。
 
void write (const String &name, const std::vector< String > &val)
 這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。
 
void write (const String &name, const String &val)
 這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。
 
void write (const String &name, double val)
 這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。
 
void write (const String &name, int val)
 用於繫結的簡化寫入 API。
 
void write (const String &name, int64_t val)
 這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。
 
void writeComment (const String &comment, bool append=false)
 寫入註釋。
 
void writeRaw (const String &fmt, const void *vec, size_t len)
 寫入多個數字。
 

靜態公共成員函式

static String getDefaultObjectName (const String &filename)
 返回指定檔名的規範化物件名稱。
 

公共屬性

std::string elname
 
Ptr< Impl > p
 
int 狀態
 

詳細描述

成員列舉文件

◆ 模式

檔案儲存模式

列舉器
READ 

值,開啟檔案進行讀取

WRITE 

value,開啟檔案以進行寫入

APPEND 

值,以追加模式開啟檔案

MEMORY 

標誌,從源讀取資料或將資料寫入內部緩衝區(由 FileStorage::release 返回)

FORMAT_MASK 

格式標誌掩碼

FORMAT_AUTO 

標誌,自動格式

FORMAT_XML 

標誌,XML 格式

FORMAT_YAML 

標誌,YAML 格式

FORMAT_JSON 

標誌,JSON 格式

BASE64 

標誌,預設以 Base64 寫入原始資料。(考慮使用 WRITE_BASE64)

WRITE_BASE64 

標誌,同時啟用 WRITE 和 BASE64

◆ 狀態

列舉器
UNDEFINED 

初始或未初始化狀態。

VALUE_EXPECTED 

在當前位置期望一個值。

NAME_EXPECTED 

在當前位置期望一個鍵/名稱。

INSIDE_MAP 

表示處於一個對映中(一組鍵值對)。

建構函式 & 解構函式文件

◆ FileStorage() [1/2]

cv::FileStorage::FileStorage ( )
Python
cv.FileStorage() -> <FileStorage 物件>
cv.FileStorage(filename, flags[, encoding]) -> <FileStorage 物件>

建構函式。

完整建構函式開啟檔案。或者,您可以使用預設建構函式,然後呼叫 FileStorage::open

◆ FileStorage() [2/2]

cv::FileStorage::FileStorage ( const String & filename,
int flags,
const String & encoding = String() )
Python
cv.FileStorage() -> <FileStorage 物件>
cv.FileStorage(filename, flags[, encoding]) -> <FileStorage 物件>

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。開啟檔案。

請參閱 FileStorage::FileStorage 中的引數描述。該方法在開啟檔案之前呼叫 FileStorage::release

引數
filename要開啟的檔名或從中讀取資料的文字字串。副檔名(.xml、.yml/.yaml 或 .json)決定了其格式(分別為 XML、YAML 或 JSON)。您還可以附加 .gz 以處理壓縮檔案,例如 myHugeMatrix.xml.gz。如果同時指定了 FileStorage::WRITEFileStorage::MEMORY 標誌,則源僅用於指定輸出檔案格式(例如 mydata.xml、.yml 等)。檔名還可以包含引數。您可以使用此格式,“*?base64”(例如 "file.json?base64"(區分大小寫)),作為 FileStorage::BASE64 標誌的替代方案。
flags操作模式。是 FileStorage::Mode 之一。
編碼檔案的編碼。請注意,目前不支援 UTF-16 XML 編碼,您應該使用 8 位編碼代替。

◆ ~FileStorage()

virtual cv::FileStorage::~FileStorage ( )
virtual

解構函式。呼叫 release()

成員函式文件

◆ endWriteStruct()

void cv::FileStorage::endWriteStruct ( )
Python
cv.FileStorage.endWriteStruct() ->

完成寫入巢狀結構(應與 startWriteStruct() 配對使用)

◆ getDefaultObjectName()

static String cv::FileStorage::getDefaultObjectName ( const String & filename)
static

返回指定檔名的規範化物件名稱。

引數
filename檔名
返回
規範化物件名稱。

◆ getFirstTopLevelNode()

FileNode cv::FileStorage::getFirstTopLevelNode ( ) const
Python
cv.FileStorage.getFirstTopLevelNode() -> retval

返回頂層對映的第一個元素。

返回
頂層對映的第一個元素。

◆ getFormat()

int cv::FileStorage::getFormat ( ) const
Python
cv.FileStorage.getFormat() -> retval

返回當前格式。

返回
當前格式,請參閱 FileStorage::Mode

◆ isOpened()

virtual bool cv::FileStorage::isOpened ( ) const
virtual
Python
cv.FileStorage.isOpened() -> retval

檢查檔案是否已開啟。

返回
如果物件與當前檔案關聯則為 true,否則為 false。嘗試開啟檔案後呼叫此方法是一個好習慣。
示例
samples/cpp/tutorial_code/core/file_input_output/file_input_output.cpp.

◆ open()

virtual bool cv::FileStorage::open ( const String & filename,
int flags,
const String & encoding = String() )
virtual
Python
cv.FileStorage.open(filename, flags[, encoding]) -> retval

開啟一個檔案。

請參閱 FileStorage::FileStorage 中的引數描述。該方法在開啟檔案之前呼叫 FileStorage::release

引數
filename要開啟的檔名或從中讀取資料的文字字串。副檔名(.xml、.yml/.yaml 或 .json)決定了其格式(分別為 XML、YAML 或 JSON)。您還可以附加 .gz 以處理壓縮檔案,例如 myHugeMatrix.xml.gz。如果同時指定了 FileStorage::WRITEFileStorage::MEMORY 標誌,則源僅用於指定輸出檔案格式(例如 mydata.xml、.yml 等)。檔名還可以包含引數。您可以使用此格式,“*?base64”(例如 "file.json?base64"(區分大小寫)),作為 FileStorage::BASE64 標誌的替代方案。
flags操作模式。是 FileStorage::Mode 之一。
編碼檔案的編碼。請注意,目前不支援 UTF-16 XML 編碼,您應該使用 8 位編碼代替。
示例
samples/cpp/tutorial_code/core/file_input_output/file_input_output.cpp.

◆ operator[]() [1/2]

FileNode cv::FileStorage::operator[] ( const char * nodename) const
Python
cv.FileStorage.getNode(nodename) -> retval

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。

◆ operator[]() [2/2]

FileNode cv::FileStorage::operator[] ( const String & nodename) const
Python
cv.FileStorage.getNode(nodename) -> retval

返回頂層對映的指定元素。

引數
nodename檔案節點的名稱。
返回
具有給定名稱的節點

◆ release()

virtual void cv::FileStorage::release ( )
virtual
Python
cv.FileStorage.release() ->

關閉檔案並釋放所有記憶體緩衝區。

在儲存的所有 I/O 操作完成後呼叫此方法。

示例
samples/cpp/tutorial_code/core/file_input_output/file_input_output.cpp.

◆ releaseAndGetString()

virtual String cv::FileStorage::releaseAndGetString ( )
virtual
Python
cv.FileStorage.releaseAndGetString() -> retval

關閉檔案並釋放所有記憶體緩衝區。

在儲存的所有 I/O 操作完成後呼叫此方法。如果儲存已開啟用於寫入資料並指定了 FileStorage::WRITE

◆ root()

FileNode cv::FileStorage::root ( int streamidx = 0) const
Python
cv.FileStorage.root([, streamidx]) -> retval

返回頂層對映。

引數
streamidx流的從零開始的索引。在大多數情況下,檔案中只有一個流。然而,YAML 支援多個流,因此可以有多個。
返回
頂層對映。

◆ startWriteStruct()

void cv::FileStorage::startWriteStruct ( const String & name,
int flags,
const String & typeName = String() )
Python
cv.FileStorage.startWriteStruct(name, flags[, typeName]) ->

開始寫入巢狀結構(序列或對映)。

引數
name結構的名稱。寫入序列(又稱“陣列”)時,傳遞一個空字串。
flags結構的型別(FileNode::MAPFileNode::SEQ(兩者均可選帶 FileNode::FLOW))。
typeName可選的儲存型別名稱。設定此引數的效果取決於儲存格式。即,如果格式具有儲存型別資訊的規範,則使用此引數。

◆ write() [1/6]

void cv::FileStorage::write ( const String & name,
const Mat & val )
Python
cv.FileStorage.write(name, val) ->

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。

◆ write() [2/6]

void cv::FileStorage::write ( const String & name,
const std::vector< String > & val )
Python
cv.FileStorage.write(name, val) ->

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。

◆ write() [3/6]

void cv::FileStorage::write ( const String & name,
const String & val )
Python
cv.FileStorage.write(name, val) ->

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。

◆ write() [4/6]

void cv::FileStorage::write ( const String & name,
double val )
Python
cv.FileStorage.write(name, val) ->

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。

◆ write() [5/6]

void cv::FileStorage::write ( const String & name,
int val )
Python
cv.FileStorage.write(name, val) ->

用於繫結的簡化寫入 API。

引數
name所寫入物件的名稱。寫入序列(又稱“陣列”)時,傳遞一個空字串。
val所寫入物件的值。

◆ write() [6/6]

void cv::FileStorage::write ( const String & name,
int64_t val )
Python
cv.FileStorage.write(name, val) ->

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於接受的引數不同。

◆ writeComment()

void cv::FileStorage::writeComment ( const String & 註釋,
bool append = false )
Python
cv.FileStorage.writeComment(comment[, append]) ->

寫入註釋。

此函式將註釋寫入檔案儲存。讀取儲存時會跳過註釋。

引數
註釋寫入的註釋,單行或多行
追加如果為 true,函式會嘗試將註釋放在當前行的末尾。否則,如果註釋是多行的,或者不適合放在當前行的末尾,則註釋會另起一行。

◆ writeRaw()

void cv::FileStorage::writeRaw ( const String & fmt,
const void * vec,
size_t len )

寫入多個數字。

將指定格式的一個或多個數字寫入當前寫入的結構。通常使用運算子 << 比使用此方法更方便。

引數
fmt每個陣列元素的規範,請參閱 格式規範
vec指向寫入陣列的指標。
len要寫入的無符號字元元素數量。

成員資料文件

◆ elname

std::string cv::FileStorage::elname

◆ p

Ptr<Impl> cv::FileStorage::p

◆ state

int cv::FileStorage::state

此類的文件生成自以下檔案