OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
无匹配
公共类型 | 公共成员函数 | 静态公共成员函数 | 公共属性 | 所有成员列表
cv::FileStorage 类参考

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

#include <opencv2/core/persistence.hpp>

cv::FileStorage 的协作图

公共类型

enum 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
}
 文件存储模式 更多...
 
enum State {
  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 ()
 完成嵌套结构(应该成对调用 )
 
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 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
 

详细描述

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

示例
samples/cpp/filestorage.cpp, samples/cpp/tutorial_code(features2D/Homography/decompose_homography.cpp), samples/cpp/tutorial_code(features2D/Homography/homography_from_camera_displacement.cpp) 和 samples/cpp/tutorial_code(features2D/Homography/pose_from_homography.cpp)。

成员枚举文档

◆ Mode

文件存储模式

枚举项
READ

值,打开文件以读取

WRITE

值,打开文件以写入

APPEND

值,打开文件以追加

MEMORY

标志,从源读取数据或将数据写入内部缓冲区(由FileStorage::release)返回

FORMAT_MASK

格式标志的掩码

FORMAT_AUTO

标志,自动格式化

FORMAT_XML

标志,XML格式

FORMAT_YAML

标志,YAML格式

FORMAT_JSON

标志,JSON格式

BASE64

标志,默认以Base64写入rawdata。(考虑使用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
encoding文件编码。注意目前不支持UTF-16 XML编码,应使用8位编码代替。

◆ ~FileStorage()

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

析构函数。调用 release()

成员函数文档

◆ endWriteStruct()

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

完成嵌套结构(应该成对调用 )

◆ 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/filestorage.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
encoding文件编码。注意目前不支持UTF-16 XML编码,应使用8位编码代替。

◆ 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 with the given name.

◆ release()

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

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

在所有与存储的I/O操作完成后调用此方法。

◆ releaseAndGetString()

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

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

在所有与存储的I/O操作完成后调用此方法。如果存储以写入数据打开,并且指定FileStorage::WRITE

示例
samples/cpp/filestorage.cpp.

◆ 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/5]

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

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

◆ write() [2/5]

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

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

◆ write() [3/5]

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

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

◆ write() [4/5]

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

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

◆ write() [5/5]

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

简化版API,可与绑定使用。

参数
name写入对象的名称。当写入序列(即“数组”)时,传递一个空字符串。
val写入对象的值。

◆ 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

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