有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理。一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作。那么如果遇到这样的场景,我们有什么好方法,搭建这类的小型数据库文件?我第一时间想到的是把这些数据全写到文件上,下次我们需要这些数据就把他们从文件里读出来就好了。

其实更好的办法是使用xml和yml,因为他们更具有可读性,简直就是为保存数据结构而生的好方法!OpenCV提供了很好用的读写xml/yml的类,我们只要掌握其读写要领,很容易就可以实现这个小型数据库。

xml/yml的写操作

如何将我们的数据写入文件保存下来?

一个简单数据写入的例子

下面是我们最常用的一些数据类型的写入xml的操作。

#include<opencv2\opencv.hpp>   #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;typedef struct{    int x;    int y;    string s;
}test_t;int main(int argc, char** argv){    FileStorage fs("test.xml", FileStorage::WRITE); //填入写操作

    //测试数据
    int a1 = 2;    char a2 = -1;    string str = "hello sysu!";    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };    test_t t&n