在matlab中重命名JPG图像

时间:2015-11-13 20:28:38

标签: matlab

我是matlab和图像分析的新手。我非常感谢对以下问题的一些见解/帮助。我试图将具有随机名称的文件夹中的图像(jpg)重命名为特定(新)名称。我制作了一个包含两列的excel文件,第一列包含旧名称,第二列包含新名称。我在堆栈溢出(Rename image file name in matlab)上找到了下一个代码:

dirData = dir('*.jpg');         %# Get the selected file data
fileNames = {dirData.name};     %# Create a cell array of file names
for iFile = 1:numel(fileNames)  %# Loop over the file names
  newName = sprintf('image%05d.jpg',iFile);  %# Make the new name
  movefile(fileNames{iFile},newName);        %# Rename the file
end

代码为所有照片提供了一个基于旧照片的新名称,但这不是我想要的,我使用的新名称与旧名称没有关联。我尝试了以下代码:

g= xlsread('names.xlsx') % names.xlsx the excel file with old and new names     
for i=1:nrows(g)
image=open(g(i,1));
save(g(i,2),image);
end 

它不起作用。我收到错误消息:使用open(第68行) NAME必须包含单个字符串。我不认为open是正确的功能。

谢谢!

2 个答案:

答案 0 :(得分:0)

似乎g = xlsread(file)只读取file中的数字数据(请参阅here)。 xlsread的第三个输出参数返回原始数据,包括字符串;做以下工作? (我没有excel,也无法测试)

[~, ~, g] = xlsread('names.xlsx')
for i = 1:nrows(g)
  movefile(g{i,1}, g{i,2})
end

答案 1 :(得分:0)

这个怎么样:

% Get the jpeg names
dir_data  = dir('*.jpg');
jpg_names = {dir_data.name};

% Rename the files according to the .xlsx file
[~,g,~] = xlsread('names.xlsx'); % Thanks to the post of Sean
old_names = g(:,1);
new_names = g(:,2);

for k = 1:numel(old_names)
        % check if the file exists
        ix_file = strcmpi(old_names{k}, jpg_names);
        if any(ix_file)
                movefile(old_names{k}, new_names{k});
        end;
end;