2012-03-05 29 views

回答

3

事實上,在OpenCV中有做一個特定的方式。您可以在XML文件如下編寫的對象:

CvFileStorage* storage = cvOpenFileStorage("globalHistogram.xml", 0, CV_STORAGE_WRITE); 
cvWrite(storage, "histogram", global_histogram); 

和閱讀是這樣的:

CvHistogram* global_histogram; 
    CvFileStorage* storage = cvOpenFileStorage("globalHistogram.xml", 0, CV_STORAGE_READ); 
    global_histogram = (CvHistogram *)cvReadByName(storage, 0, "histogram" ,0); 
0

1)決定的文件格式,在字節級計劃它(如果現有的格式是合適的,喜歡它)。

2)以您決定的文件格式寫出數據。

0

你可以沿着以下的行添加一個方法叫做Serialise類的東西:

CvHist::Serialise(std::string fName, bool read) 
{ 
    if (read) 
    { 
     std::ifstream fStream(fName); 
     // Read in values from file, eg: 
     fStream >> this->param1; 
     fStream >> this->param2; 
     // ...etc 
    } 
    else 
    { 
     std::ofstream fStream(fName, ios::trunc); // (ios::trunc clears file) 
     // Read out values into file, eg: 
     fStream << this->param1; 
     fStream << this->param2; 
     // ...etc 
    } 
} 

注意,順序很重要 - 爲了您閱讀該文件中的各種參數必須將您寫入參數的順序與文件匹配。還記得#include <fstream>

現在,創建從一個文件中的數據填充的CvHist對象data.txt你可以簡單地寫:

CvHist object; 
object.Serialise("data.txt", true); 

如果你填充一個對象,並希望將其存儲在一個文件中,這個時候,說,bob.dat,這樣寫:

// (object has been populated with data previously) 
object.Serialise("bob.dat", false);