2012-04-23 106 views

回答

10

假設您正在處理單通道(灰度)圖像,則直方圖可以由單通道行矩陣表示,其長度等於直方圖中的箱數。 然後,您可以輕鬆地將您的直方圖加載/保存到文本文件。 如果你想使用C++ opencv API,還提供了filestorage結構。閱讀this

下面是一個簡單的例子:

// save file 
cv::Mat my_histogram; 
cv::FileStorage fs("my_histogram_file.yml", cv::FileStorage::WRITE); 
if (!fs.isOpened()) {std::cout << "unable to open file storage!" << std::endl; return;} 
fs << "my_histogram" << my_histogram; 
fs.release(); 

// load file 
cv::Mat my_histogram; 
cv::FileStorage fs("my_histogram_file.yml", cv::FileStorage::READ); 
if (!fs.isOpened()) {std::cout << "unable to open file storage!" << std::endl; return;} 
fs >> "my_histogram" >> my_histogram; 
fs.release(); 
+0

好的,謝謝!我需要將這些數據轉化爲cvHistogram來與它進行比較。我假設調用cv :: createHist()並傳遞它加載的cv :: Mat將工作,對吧? – pparescasellas 2012-04-23 10:59:31

+0

double compareHist(InputArray H1,InputArray H2,int方法) - InputArray可以是你加載的cv :: Mat。 – Eric 2012-04-23 12:01:18

+0

太好了,非常感謝。 – pparescasellas 2012-04-23 12:05:35