Jon*_*nny 7 matlab image-processing
这是所需的工作流程:
到最后,我应该有一个数据结构存储图像1-100的代码输出.
我该怎么做呢?
小智 9
如果您知道它们所在目录的名称,或者您cd到该目录,则使用dir获取图像名称列表.
现在它只是一个for循环加载图像.将图像存储在单元格阵列中.例如...
D = dir('*.jpg');
imcell = cell(1,numel(D));
for i = 1:numel(D)
imcell{i} = imread(D(i).name);
end
Run Code Online (Sandbox Code Playgroud)
请注意,这100张图片会占用太多内存.例如,如果是uint8 RGB值,则单个1Kx1K图像将需要3兆字节存储.这可能看起来不是很大.
但是,这些图像中的100个将需要300 MB的RAM.真正的问题是,如果你对这些图像的操作将它们变成双打,那么它们现在将占用2.4 GIGAbytes的内存.这将很快占用你的RAM量,特别是如果你没有使用64位版本的MATLAB.
假设您的图像以顺序方式命名,您可以这样做:
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
Run Code Online (Sandbox Code Playgroud)
然后,元胞数组RESULT
包含每个图像的输出。
请注意,根据图像的大小,预取图像可能会导致内存不足。