我有一个图像数据库,我处理并保存为:
IplImage * database [10000];
database [0] = image1
数据库[1] = image2
...等
现在我要保存这个数据库IplImage矩阵。我怎样才能做到这一点 ?我知道我可以遍历所有图像并逐个保存,但这不是我想要的。
我读过类似cvSave和cvLoad的内容,它允许我保存并加载一个命令,但是当我使用它时出现错误(cvSave(“myimagedatabase.xml”,& database);)。你能指导我吗?
提前谢谢
答案 0 :(得分:1)
如果您不想将它们保存为单独的图像,那么使用一系列图像(也称为电影)呢?
请参阅opencv cvVideoWriter,如果您选择0作为编解码器,它们将被保存为未压缩的
答案 1 :(得分:0)
我从你的问题中收集到的是你有兴趣将数据严格保存到某个文件,然后在以后重新加载,并且你不会对在图像编辑程序中打开存储的数据感兴趣像这样。
首先要考虑的是,IplImage的重要部分是什么 *深度 *身高 *宽度 * nChannels * imageData数组
我要做的是在每个IplImage的循环中创建一个函数将每个数据值写入二进制文件。给文件一个标题,注明有多少图像。使用深度,高度宽度和nChannel,您可以计算imageData数组的大小。假设所有都具有相同的深度(例如IPL_DEPTH_8U),那么这应该很容易,如果它们变化,这可能会变得棘手。
加载数据只需读入二进制数据和标题信息,然后逐个循环遍历所有数据,并根据该数据创建新的IplImages。