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());  

参数说明:

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

flags – 操作方式,包括:

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

#include<iostream>
#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();

}

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

#include<iostream>
#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();

}

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

#include<iostream>
#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();

}

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

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

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

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

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

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值