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

此类的文档生成自以下文件