2011-07-07 49 views
1

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

IplImage * database [10000];

数据库[0] =此搜索

数据库[1] =图像2

...等

现在我想保存该数据库的IplImage矩阵。我怎样才能做到这一点 ?我知道我可以循环播放所有图像,并将它们逐一保存,但这并不是我正在寻找的内容。 (cvSave(“myimagedatabase.xml”,& database);)我读了类似cvSave和cvLoad的东西,它允许我在一个命令中保存和加载,但当我使用它时发生错误(cvSave(“myimagedatabase.xml”,& database);)。你能指导我吗?

预先感谢您

回答

0

我从你的问题收集的是,你有兴趣在严格的数据保存到某些文件,然后在重装回稍后的一点,你不会有兴趣在图像编辑程序或类似的东西中打开存储的数据。

首先要考虑的,有什么是IplImage 的重要组成部分*深度 *高度 *宽 * nChannels *为imageData阵列

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

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

+0

鉴于opencv具有图像读/写功能,可能更容易使用实际的电影。一旦添加了图像大小,位数,帧尾检查,然后你想编辑数据,你也可以使用AVI - 除非你真的被编程时间困住了。 –

1

如果你不想将它们保存为单独的图像有关使用图像序列的 - 也被称为电影吗?

见OpenCV的cvVideoWriter,如果选择0作为编解码器,他们将被保存未压缩