OpenCV FileStorage类使用

FileStorage类

构造函数
operator <<
FileStorage::open
FileStorage::isOpened
FileStorage::release

FileStorage类将各种OpenCV数据结构的数据存储为XML 或 YML格式。
构造函数

FileStorage类的构造函数为:

cv::FileStorage(const string& source, int flags, const string& encoding=string());
1

参数说明:

source –存储或读取数据的文件名(字符串),其扩展名(.xml 或 .yml或者.yaml)决定文件格式。

flags – 操作方式,包括:

FileStorage::READ 打开文件进行读操作
FileStorage::WRITE 打开文件进行写操作
FileStorage::APPEND打开文件进行附加操作,在已有内容的文件里添加
encoding:编码方式,用默认值就好。
下面为写操作的例子(注意<<箭头指向):

#include
#include<opencv2/highgui.hpp>
#include<opencv2/core/core.hpp>

using namespace cv;
using namespace std;

int main(int argc,char**argv)
{
FileStorage fs(“1.yml”,FileStorage::WRITE);
int num1,num2;
num1=3,num2=4;

fs<<"num1"<<num1;
fs<<"num2"<<num2;
Mat A(4,5,CV_32FC1,Scalar(10));
fs["A"]<<A;
fs.release();

}1234567891011121314151617181920

下面为读操作的例子(注意>>箭头指向):

#include
#include<opencv2/highgui.hpp>
#include<opencv2/core/core.hpp>

using namespace cv;
using namespace std;

int main(int argc,char**argv)
{
FileStorage fs(“1.yml”,FileStorage::READ);
int num1,num2;

fs["num1"]>>num1;//读num1 其中["num1"]为1.yml内标识作用
fs["num2"]>>num2;
Mat A(4,5,CV_32FC1);
fs["A"]>>A;
fs.release();

}12345678910111213141516171819

下面为附加操作的例子(注意>>箭头指向):

#include
#include<opencv2/highgui.hpp>
#include<opencv2/core/core.hpp>

using namespace cv;
using namespace std;

int main(int argc,char**argv)
{
FileStorage fs(“1.yml”,FileStorage::APPEND);//只需将写操作的WRITE改成APPEND
int num1,num2;
num3=30,num4=10;

fs<<"num3"<<num1;
fs<<"num4"<<num2;
Mat B(4,5,CV_32FC1,Scalar(0));
fs["A"]<<A;
fs.release();

}1234567891011121314151617181920

FileStorage::open():函数用于打开相关文件

boolFileStorage::open(const string& filename, int flags, const string&encoding=string()) 1

FileStorage::isOpened ():用于检测文件是否打开。
一般如下有操作:

cv::FileStorage fs;
fs.open("1.yml",FileStorage::WRITE);//打开1.yml文件并对其进行写操作
if(!fs.isOpened())//判别打开与否
{
    cout<<""<<endl;
    return 0;
}
//....一系列操作
fs.release(); 123456789

当然也可以对打开的文件进行其他操作,改变一下flags即可。


本文来自 Coma_6512 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/coma_6512/article/details/78232649?utm_source=copy

猜你喜欢

转载自blog.csdn.net/weixin_37747104/article/details/82918947