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