有時(shí)候我們處理完圖像后需要保存一下數(shù)據(jù)到文件上,以供下一步的處理。一個(gè)比較廣泛的需求場(chǎng)景就是:我們對(duì)一幅圖像進(jìn)行特征提取之后,需要把特征點(diǎn)信息保存到文件上,以供后面的機(jī)器學(xué)習(xí)分類操作。那么如果遇到這樣的場(chǎng)景,我們有什么好方法,搭建這類的小型數(shù)據(jù)庫文件?我第一時(shí)間想到的是把這些數(shù)據(jù)全寫到文件上,下次我們需要這些數(shù)據(jù)就把他們從文件里讀出來就好了。
其實(shí)更好的辦法是使用xml和yml,因?yàn)樗麄兏哂锌勺x性,簡(jiǎn)直就是為保存數(shù)據(jù)結(jié)構(gòu)而生的好方法!OpenCV提供了很好用的讀寫xml/yml的類,我們只要掌握其讀寫要領(lǐng),很容易就可以實(shí)現(xiàn)這個(gè)小型數(shù)據(jù)庫。
xml/yml的寫操作
如何將我們的數(shù)據(jù)寫入文件保存下來?
一個(gè)簡(jiǎn)單數(shù)據(jù)寫入的例子
下面是我們最常用的一些數(shù)據(jù)類型的寫入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); //填入寫操作 //測(cè)試數(shù)據(jù) 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