我有很多图片在1.jpg,2.jpg,3.jpg等目录中。我逐一阅读。我做了一些操作&然后我救了他们。
我想自动执行此操作。我可以读取图像名称。然后在生成输出文件时,我从输入文件名中提取image_name,添加我需要的扩展名,添加我要保存的文件类型,然后通过print命令保存图像。
%//Read the image
imagefiles = dir('*.bmp');
nfiles = length(imagefiles); % Number of files found
for ii=1:nfiles
currentfilename = imagefiles(ii).name;
currentimage = imread(currentfilename);
images{ii} = currentimage;
Img=currentimage;
%//Do some operation on the image
%//Save the image file
h=figure;
%//Display the figure to be saved
token = strtok(currentfilename, '.');
str1 = strcat(token,'_op');
print(h,'-djpeg',str1);
end
这个程序工作正常但后来我发现了这个命令来绘制漂亮的图形。 export_fig
export_fig
采用以下形式的基本命令:
export_fig file_name.file_type
如何在export_fig命令中自动替换存储为str1的输出文件名代替file_name占位符。
注意:请注意出自export_fig文档(对于变量文件名)
for a = 1:5
plot(rand(5, 2));
export_fig(sprintf('plot%d.png', a));
end
我不想要这个解决方案。请理解我的查询,即有数千个MATLAB函数需要输入数据,如export_fig
基本语句中所示。有关变量文件名的特殊情况已经在export_fig函数中构建。
我想知道它是否未构建,那么我怎么能使用自动生成的变量文件名呢?我的查询不是专门针对export_fig,而是关于如果输入不能是字符串我可以提供变量文件名的基本方法吗?
如果您无法理解这个问题,请问我。
答案 0 :(得分:4)
语法my_function file_name.file_type
相当于my_function('file_name.file_type')
- 两者之间没有区别。
因此,如果你想在循环中使用它,你可以使用任何方法来创建文件名,然后调用函数:
for i=1:N
% construct the filename for this loop - this would be `str1` in your example
file_name = sprintf('picture_%i.jpeg', i);
% or:
file_name = strcat('picture_', num2str(i), '.jpeg');
% call the function with this filename:
my_function(file_name);
end