保存IplImage数组



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

IplImage *数据库[10000];

数据库[0]= image1

数据库[1]= image2

…等

现在我想保存这个数据库IplImage矩阵。我该怎么做呢?我知道我可以遍历所有的图像并逐个保存它们,但这并不是我真正想要的。

我读了cvSave和cvLoad这样的东西,它允许我保存和加载在一个命令,但我得到一个错误,当我使用它(cvSave("myimageddatabase .xml",&数据库);)。你能给我引路吗?

提前感谢

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

参见opencv cvVideoWriter,如果您选择0作为编解码器,它们将以未压缩的方式保存

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

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

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

加载数据只需读入二进制数据和头信息,逐个循环遍历所有数据并基于该数据创建新的IplImages。

相关内容

  • 没有找到相关文章

最新更新