0

我正在使用 C API OpenCV 更新 C 中的旧代码,我需要在内存中加载至少 300 张图像才能使用它们进行一些算法。

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

最好的方法是什么?

4

2 回答 2

1

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

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

于 2012-04-25T12:49:51.667 回答
0

我想对于大多数应用程序而言,这样做带来的性能提升是如此之小,以至于它甚至不值得麻烦。确保有任何收益的唯一方法是这样做并测量时间。

您的方法的问题在于,根据图像的大小,您可能会用完 RAM 内存来一次存储它们。

于 2012-04-25T12:45:26.243 回答