Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中加载多幅图像_Matlab_Image Processing - Fatal编程技术网

在MATLAB中加载多幅图像

在MATLAB中加载多幅图像,matlab,image-processing,Matlab,Image Processing,以下是所需的工作流: 我想将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,

以下是所需的工作流:

  • 我想将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
然后包含每个图像的输出


请注意,根据图像的大小,预取图像可能会导致内存不足。

如果您知道图像所在目录的名称,或者如果您将其cd到该目录,请使用dir获取图像名称列表

现在它只是一个for循环来加载图像。将图像存储在单元格数组中。例如

D = dir('*.jpg');
imcell = cell(1,numel(D));
for i = 1:numel(D)
  imcell{i} = imread(D(i).name);
end
请注意,这100个图像将占用太多内存。例如,如果一个1Kx1K映像是uint8 RGB值,则需要存储3兆字节。这似乎不是一个很大的数目


但是,100个这样的图像将需要300 MB的RAM。真正的问题是,如果您对这些图像的操作将它们变成双倍,那么它们现在将占用2.4GB的内存。这将很快消耗掉您拥有的RAM量,特别是如果您不使用64位版本的MATLAB。

正如许多人所说,这可能会变得相当大。完成后,是否有理由需要将所有这些都存储在内存中?当你处理完这些结果后,你能把它们写成文件吗?这样,在给定的时间里,你的内存中就不会有超过输入和输出的图像了

完成后,IMWRITE可以将它们从内存中删除