OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
cv::FileStorage 类参考

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

#include <opencv2/core/persistence.hpp>

cv::FileStorage 的协作图

公开类型

enum  模式 {
  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
}
 文件存储模式 更多...
 
enum  状态 {
  UNDEFINED = 0 ,
  VALUE_EXPECTED = 1 ,
  NAME_EXPECTED = 2 ,
  INSIDE_MAP = 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 state
 

详细说明

成员枚举文档

◆ 模式

文件存储模式

枚举值 (Enumerator)
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

◆ 状态

枚举值 (Enumerator)
UNDEFINED 

初始或未初始化状态。

VALUE_EXPECTED 

当前位置期望一个值。

NAME_EXPECTED 

当前位置期望一个键/名称。

INSIDE_MAP 

表示在映射内部(一组键值对)。

构造函数与析构函数说明

◆ FileStorage() [1/2]

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

构造函数。

完整构造函数打开文件。另外,您可以使用默认构造函数,然后调用 FileStorage::open

◆ FileStorage() [2/2]

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

这是一个重载成员函数,为方便起见而提供。它与上述函数的唯一区别在于它接受的参数。打开文件。

请参阅 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() -> 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 标志,则源仅用于指定输出文件格式(例如 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 * 节点名) const
Python
cv.FileStorage.getNode(节点名) -> retval

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

◆ operator[]() [2/2]

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

返回顶级映射的指定元素。

参数
节点名文件节点的名称。
返回
具有给定名称的 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

返回顶级映射。

参数
流索引基于零的流索引。在大多数情况下,文件只有一个流。然而,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))。
类型名您存储的类型的可选名称。设置此参数的效果取决于存储格式。即,如果格式具有存储类型信息的规范,则使用此参数。

◆ 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写入对象的值。

◆ 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 & 注释,
bool append = false )
Python
cv.FileStorage.writeComment(comment[, append]) -> None

写入注释。

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

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

◆ writeRaw()

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

写入多个数字。

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

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

成员数据文档

◆ 元素名

std::string cv::FileStorage::elname

◆ p

Ptr<Impl> cv::FileStorage::p

◆ 状态

int cv::FileStorage::state

该类的文档由以下文件生成: