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
#include
#include

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"<"num2"<4,5,CV_32FC1,Scalar(10));
    fs["A"]<

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

#include
#include
#include

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
#include
#include

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"<"num4"<4,5,CV_32FC1,Scalar(0));
    fs["A"]<

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即可。

你可能感兴趣的:(opencv基础)