opencv存儲MAT矩陣中的數(shù)據(jù)
在視覺處理過程中,往往需要保存中間數(shù)據(jù)。這些數(shù)據(jù)的數(shù)據(jù)類型往往并不是整數(shù)。
OpenCV的C++接口中,用于保存圖像的imwrite只能保存整數(shù)數(shù)據(jù),且需作為圖像格式。當(dāng)需要保存浮點(diǎn)數(shù)據(jù)或XML/YML文件時,OpenCV的C語言接口提供了cvSave函數(shù),但這一函數(shù)在C++接口中已經(jīng)被刪除。取而代之的是FileStorage類。
具體使用方法參照這個例子:
矩陣存儲
Mat mat = Mat::eye(Size(12,12), CV_8UC1); FileStorage fs(".\vocabulary.xml", FileStorage::WRITE); fs<<"vocabulary"<<mat; fs.release();
在另一處,需要加載這個矩陣數(shù)據(jù)。代碼如下:
FileStorage fs(".\vocabulary.xml", FileStorage::READ); Mat mat_vocabulary; fs["vocabulary"] >> mat_vocabulary;
在存儲數(shù)據(jù)時,fs<<"vocabulary"<<mat將mat矩陣保存在了聲明fs對象時制定的xml文件的vocabulary標(biāo)簽下,也可換成其它標(biāo)簽??梢远鄠€<<符號連續(xù)使用,程序?qū)⒆詣訉⒁杻?nèi)容理解為標(biāo)簽名,不帶引號的理解為數(shù)據(jù)變量或者常量。
在讀取數(shù)據(jù)時,[ ]中的內(nèi)容為指定的標(biāo)簽,并將數(shù)據(jù)讀入>>的變量中。