这里的多个图像是期望的工作流程:载入在MATLAB
- 欲100倍的图像加载到MATLAB工作区
- 运行上的图像
- 保存我的输出一堆我的代码(输出由我的代码返回是一个整数阵列)在一个新的阵列
到最后,我应该有一个数据结构存储图像1-100代码的输出。
我该怎么做呢?
这里的多个图像是期望的工作流程:载入在MATLAB
到最后,我应该有一个数据结构存储图像1-100代码的输出。
我该怎么做呢?
假设你的图像在一个连续的命名方式,你可以这样做:
N = 100
IMAGES = cell(1,N);
FNAMEFMT = 'image_%d.png';
% Load images
for i=1:N
IMAGES{i} = imread(sprintf(FNAMEFMT, i));
end
% Run code
RESULT = cell(1,N);
for i=1:N
RESULT{i} = someImageProcessingFunction(IMAGES{i});
end
单元阵列RESULT
则包含每个图像的输出。
请注意,根据图像的大小,预取图像可能会导致内存不足。
如果您知道所在目录的名称,或者如果您转到该目录,请使用dir获取映像名称列表。
现在,它只是一个for循环加载图像。将图像存储在单元阵列中。例如...
D = dir('*.jpg');
imcell = cell(1,numel(D));
for i = 1:numel(D)
imcell{i} = imread(D(i).name);
end
请注意这100个图像会占用太多的内存。例如,如果是uint8 RGB值,则单个1Kx1K图像需要3兆字节才能存储。这似乎不是一个巨大的数额。
但是,这些图像中的100个将需要300 MB的RAM。真正的问题是如果您对这些映像的操作将它们变成双打,那么它们现在将占用2.4 GIGA内存。这会很快耗尽你拥有的RAM数量,特别是如果你不使用64位版本的MATLAB。
正如很多人所说,这可能会相当大。完成后是否有理由在记忆中需要所有这些内容?当你完成它们时,你可以将单个结果写成文件吗?这样在给定的时间内,你永远不会有超过内存中的输入和输出图像?
IMWRITE在你完成后很容易让他们失去记忆。