2012-03-05 5 views
0

OpenCV를 사용하고 있으며 CvHist라는 클래스 안에 들어있는 일부 이미지의 막대 그래프를 계산 중입니다. CvHist 객체가 있지만 나중에 다른 파일에 사용하기 위해 객체를 저장하려고합니다. 어떻게해야합니까? 개체를 C++로 파일에 작성하십시오.

는) 그것을 좋아, 당신

답변

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

:

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 
    } 
} 

주, 순서가 중요하다 - 당신이 파일에서 다양한 매개 변수를 읽는 순서해야 매개 변수를 파일에 쓰는 순서와 일치시킵니다. 또한 파일의 데이터로 채워진 CvHist 개체를 만드는 데 지금 #include <fstream>

에 기억 data.txt 당신은 단순히이를 작성할 수 있습니다

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

객체를 채워 파일에 저장하려면 한 경우 이 시간은, 말하자면, bob.dat이 쓰기 :

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