使用opencv在内存中加载一组图片

时间:2012-04-25 11:20:54

标签: c opencv

我正在使用C API OpenCV更新C中的旧代码,我需要在内存中加载至少300个图像以制作一些算法。

所以,我一直在想我可以将这些图像加载到内存中以使操作更快,而不是从磁盘加载并对每个操作进行一次操作。

最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您正在使用C代码,那么您的图像将自动保留在内存中,直到您明确释放它们为止。只需在要从磁盘加载的每个映像上调用cvLoadImage即可。我建议你将IplImage*指针存储在一个大数组中,这样你就不会忘记它们。完成后,只需调用cvReleaseImage即可释放内存。

正如您所提到的,当您加载时,您必须注意不要耗尽内存。如果这样做,你将别无选择,只能将一个子集加载到内存中,并将其余部分保存在磁盘上。

答案 1 :(得分:0)

我认为,对于大多数应用来说,这样做的性能提升很少,甚至不值得麻烦。确保有任何收益的唯一方法是通过这样做并测量时间。

您的方法存在的问题是,根据图像的大小,您可能会耗尽RAM内存以便一次性存储它们。