OpenCV 4.11.0
开源计算机视觉
加载中...
搜索中...
无匹配项
cv::FileStorage 类参考

XML/YAML/JSON 文件存储类,封装了所有写入或读取文件数据所需的信息。更多...

#include <opencv2/core/persistence.hpp>

cv::FileStorage 的协作图

公共类型

枚举  Mode {
  READ = 0 ,
  WRITE = 1 ,
  APPEND = 2 ,
  MEMORY = 4 ,
  FORMAT_MASK = (7<<3) ,
  FORMAT_AUTO = 0 ,
  FORMAT_XML = (1<<3) ,
  FORMAT_YAML = (2<<3) ,
  FORMAT_JSON = (3<<3) ,
  BASE64 = 64 ,
  WRITE_BASE64 = BASE64 | WRITE
}
 文件存储模式 更多...
 
枚举  State {
  UNDEFINED = 0 ,
  VALUE_EXPECTED = 1 ,
  NAME_EXPECTED = 2 ,
  INSIDE_MAP = 4
}
 

公共成员函数

 FileStorage ()
 构造函数。
 
 FileStorage (const String &filename, int flags, const String &encoding=String())
 
虚函数 ~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 state
 

详细描述

成员枚举文档

◆ Mode

文件存储模式

枚举器
READ 

值,以读取模式打开文件

WRITE 

值,以写入模式打开文件

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 标志,则 source 仅用于指定输出文件格式(例如 mydata.xml、.yml 等)。文件名也可以包含参数。您可以使用此格式“*?base64”(例如“file.json?base64”(区分大小写))作为 FileStorage::BASE64 标志的替代方案。
flags操作模式。 FileStorage::Mode 之一
encoding文件的编码。请注意,目前不支持 UTF-16 XML 编码,您应该使用 8 位编码代替。

◆ ~FileStorage()

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

析构函数。调用 release()

成员函数文档

◆ endWriteStruct()

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

完成写入嵌套结构(应与 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 标志,则 source 仅用于指定输出文件格式(例如 mydata.xml、.yml 等)。文件名也可以包含参数。您可以使用此格式“*?base64”(例如“file.json?base64”(区分大小写))作为 FileStorage::BASE64 标志的替代方案。
flags操作模式。 FileStorage::Mode 之一
encoding文件的编码。请注意,目前不支持 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文件节点的名称。
返回值
具有给定名称的 Node

◆ release()

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

关闭文件并释放所有内存缓冲区。

完成所有与存储相关的 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]) -> None

开始写入嵌套结构(序列或映射)。

参数
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) -> None

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅仅在于它接受的参数。

◆ write() [2/6]

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

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅仅在于它接受的参数。

◆ write() [3/6]

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

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅仅在于它接受的参数。

◆ write() [4/6]

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

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅仅在于它接受的参数。

◆ write() [5/6]

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

简化的写入API,用于绑定。

参数
name写入对象的名称。写入序列(也称为“数组”)时,请传递空字符串。
val写入对象的value。

◆ write() [6/6]

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

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅仅在于它接受的参数。

◆ writeComment()

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

写入注释。

此函数将注释写入文件存储区。读取存储区时,将跳过注释。

参数
comment写入的注释,单行或多行
append如果为真,则函数尝试将注释放在当前行的末尾。否则,如果注释是多行注释,或者注释不适合放在当前行的末尾,则注释将另起一行。

◆ writeRaw()

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

写入多个数字。

将一个或多个指定格式的数字写入当前写入的结构。通常,使用运算符 << 比使用此方法更方便。

参数
fmt每个数组元素的规范,请参见 格式规范
vec指向写入数组的指针。
len要写入的 uchar 元素的数量。

成员数据文档

◆ elname

std::string cv::FileStorage::elname

◆ p

Ptr<Impl> cv::FileStorage::p

◆ state

int cv::FileStorage::state

此类的文档是从以下文件生成的