OpenCV加载/保存直方图数据

时间:2012-04-23 08:50:49

标签: c++ image opencv histogram

有没有办法将OpenCv图像直方图存储到磁盘上,这样就可以直接加载它而不必强制再次加载图像并从中计算直方图?

谢谢。

1 个答案:

答案 0 :(得分:11)

假设您正在处理单通道(灰度)图像,直方图可以由单个通道行矩阵表示,其长度等于直方图中的二进制数。 然后,您可以轻松地将直方图从/向文本文件加载/保存。 如果要使用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();