2013-03-28 55 views
1

我有一個YML文件,該文件是這樣的:如何訪問opencv中的yml文件的元素?

%YAML:1.0

X: !!opencv-matrix 
    rows: 13 
    cols: 40 
    dt: f 
    data: [ 166.000000, 162.666667, 159.333333, 
     156.000000, 152.666667, 149.333333, 146.000000, 
     142.333333, 138.666667, 135.000000, 131.333333,.... etc 

如何將此文件轉換成矩陣形式和訪問它的元素。我必須在這個矩陣上做一些數學運算。我已經寫了下面的代碼來讀取這個文件。如果我想說從第二列減去第一列,我該怎麼辦?請幫忙。

代碼:

#include "stdafx.h" 
#include "cv.h" 
#include "highgui.h" 

using namespace cv; 
using namespace std; 

int main (int argc, char * const argv[]) 
{ 
Mat X; 
string XFile = "newStorageFile.yml"; 
FileStorage fsDemoX(XFile , FileStorage::READ); 
fsDemoX["X"] >> X; 

cout << "Print the contents of X:" << endl; 
cout << X << endl << endl; 

fsDemoX.release(); 

return 0; 
} 
+0

這個問題到底如何與YAML相關?當你不必從文件中讀取矩陣時,你能夠執行操作嗎?或者在閱讀文件時是否有錯誤?或者,您是否只關心如何使用矩陣執行操作? – sietschie 2013-03-28 11:43:03

+0

@sietschie:我有yml文件,我想要一種訪問和操作這個yml數據的矩陣操作的方法。我如何進一步發展。在閱讀文件時我沒有任何錯誤。 謝謝 Hari – user2214766 2013-03-28 23:38:13

回答

0

這是存儲在YML格式的OpenCV的矩陣。 你有你需要的所有文件加載在文檔的persistency page矩陣。

然後,您可以將您的矩陣處理爲array of coefficients或作爲matrix(代數含義)處理。作爲一個方面說明,你不需要調用fsDemoX.release()方法,當到達作用域結束時,析構函數會自動調用。

+0

感謝您的回覆。我是Opencv的初學者,所以你可以詳細說明「在文檔的持久性頁面中加載矩陣」是什麼意思? 謝謝 Hari – user2214766 2013-03-28 23:48:27