opencv存儲MAT矩陣中的數據

在視覺處理過程中,往往需要保存中間數據。這些數據的數據類型往往並不是整數。

OpenCV的C++接口中,用於保存圖像的imwrite只能保存整數數據,且需作爲圖像格式。當需要保存浮點數據或XML/YML文件時,OpenCV的C語言接口提供了cvSave函數,但這一函數在C++接口中已經被刪除。取而代之的是FileStorage類。


具體使用方法參照這個例子:

矩陣存儲

  1. Mat mat = Mat::eye(Size(12,12), CV_8UC1);
  2. FileStorage fs(".\\vocabulary.xml", FileStorage::WRITE);
  3. fs<<"vocabulary"<<mat;
  4. fs.release();

在另一處,需要加載這個矩陣數據。代碼如下:

  1. FileStorage fs(".\\vocabulary.xml", FileStorage::READ);
  2. Mat mat_vocabulary;
  3. fs["vocabulary"] >> mat_vocabulary;

在存儲數據時,fs<<"vocabulary"<<mat將mat矩陣保存在了聲明fs對象時制定的xml文件的vocabulary標籤下,也可換成其它標籤。可以多個<<符號連續使用,程序將自動將引號內容理解爲標籤名,不帶引號的理解爲數據變量或者常量。

在讀取數據時,[ ]中的內容爲指定的標籤,並將數據讀入>>的變量中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章