保存一组IplImage?

时间:2011-07-07 17:42:56

标签: opencv

我有一个图像数据库,我处理并保存为:

IplImage * database [10000];

database [0] = image1

数据库[1] = image2

...等

现在我要保存这个数据库IplImage矩阵。我怎样才能做到这一点 ?我知道我可以遍历所有图像并逐个保存,但这不是我想要的。

我读过类似cvSave和cvLoad的内容,它允许我保存并加载一个命令,但是当我使用它时出现错误(cvSave(“myimagedatabase.xml”,& database);)。你能指导我吗?

提前谢谢

2 个答案:

答案 0 :(得分:1)

如果您不想将它们保存为单独的图像,那么使用一系列图像(也称为电影)呢?

请参阅opencv cvVideoWriter,如果您选择0作为编解码器,它们将被保存为未压缩的

答案 1 :(得分:0)

我从你的问题中收集到的是你有兴趣将数据严格保存到某个文件,然后在以后重新加载,并且你不会对在图像编辑程序中打开存储的数据感兴趣像这样。

首先要考虑的是,IplImage的重要部分是什么 *深度 *身高 *宽度 * nChannels * imageData数组

我要做的是在每个IplImage的循环中创建一个函数将每个数据值写入二进制文件。给文件一个标题,注明有多少图像。使用深度,高度宽度和nChannel,您可以计算imageData数组的大小。假设所有都具有相同的深度(例如IPL_DEPTH_8U),那么这应该很容易,如果它们变化,这可能会变得棘手。

加载数据只需读入二进制数据和标题信息,然后逐个循环遍历所有数据,并根据该数据创建新的IplImages。