我正在使用C API OpenCV更新C中的旧代码,我需要在内存中加载至少300个图像以制作一些算法。
所以,我一直在想我可以将这些图像加载到内存中以使操作更快,而不是从磁盘加载并对每个操作进行一次操作。
最好的方法是什么?
答案 0 :(得分:1)
如果您正在使用C代码,那么您的图像将自动保留在内存中,直到您明确释放它们为止。只需在要从磁盘加载的每个映像上调用cvLoadImage
即可。我建议你将IplImage*
指针存储在一个大数组中,这样你就不会忘记它们。完成后,只需调用cvReleaseImage
即可释放内存。
正如您所提到的,当您加载时,您必须注意不要耗尽内存。如果这样做,你将别无选择,只能将一个子集加载到内存中,并将其余部分保存在磁盘上。
答案 1 :(得分:0)
我认为,对于大多数应用来说,这样做的性能提升很少,甚至不值得麻烦。确保有任何收益的唯一方法是通过这样做并测量时间。
您的方法存在的问题是,根据图像的大小,您可能会耗尽RAM内存以便一次性存储它们。