文件批量重命名

节转自:http://blog.csdn.net/sinat_30071459/article/details/50723212


0.文件夹名

首先,确定你的数据集所放的文件夹名字,例如我的叫logos。

(或者和voc2007一样的名字:VOC2007)

1.图片命名

虽然说图片名对训练没什么影响,但建议还是按VOC2007那样,如“000005.jpg”这种形式。至于图片格式,代码里是写的jpg。
批量修改图片名字为VOC2007格式可以参考以下Matlab代码:
  1. %%  
  2. %图片保存路径为:  
  3. %E:\image\car  
  4. %E:\image\person  
  5. %car和person是保存车和行人的文件夹  
  6. %这些文件夹还可以有多个,  
  7. %放在image文件夹里就行  
  8. %该代码的作用是将图片名字改成000123.jpg这种形式  
  9. %%  
  10. clc;  
  11. clear;  
  12.   
  13. maindir=’E:\image\’;  
  14. name_long=5; %图片名字的长度,如000123.jpg为6,最多9位,可修改  
  15. num_begin=1; %图像命名开始的数字如000123.jpg开始的话就是123  
  16.   
  17. subdir = dir(maindir);  
  18. n=1;  
  19.   
  20. for i = 1:length(subdir)  
  21.   if ~strcmp(subdir(i).name ,’.’) && ~strcmp(subdir(i).name,’..’)  
  22.      subsubdir = dir(strcat(maindir,subdir(i).name));  
  23.     for j=1:length(subsubdir)  
  24.          if ~strcmp(subsubdir(j).name ,’.’) && ~strcmp(subsubdir(j).name,’..’)  
  25.             img=imread([maindir,subdir(i).name,’\’,subsubdir(j).name]);  
  26.             imshow(img);  
  27.             str=num2str(num_begin,’%09d’);  
  28.             newname=strcat(str,’.jpg’);  
  29.             newname=newname(end-(name_long+3):end);  
  30.             system([‘rename ’ [maindir,subdir(i).name,’\’,subsubdir(j).name] ’ ’ newname]);  
  31.             num_begin=num_begin+1;  
  32.             fprintf(‘当前处理文件夹%s’,subdir(i).name);  
  33.             fprintf(‘已经处理%d张图片\n’,n);  
  34.             n=n+1;  
  35.            pause(0.1);%可以将暂停去掉  
  36.          end  
  37.     end  
  38.   end  
  39. end  
%%
%图片保存路径为:
%E:\image\car
%E:\image\person
%car和person是保存车和行人的文件夹
%这些文件夹还可以有多个,
%放在image文件夹里就行
%该代码的作用是将图片名字改成000123.jpg这种形式
%%
clc;
clear;

maindir='E:\image\';
name_long=5; %图片名字的长度,如000123.jpg为6,最多9位,可修改
num_begin=1; %图像命名开始的数字如000123.jpg开始的话就是123

subdir = dir(maindir);
n=1;

for i = 1:length(subdir)
  if ~strcmp(subdir(i).name ,'.') && ~strcmp(subdir(i).name,'..')
     subsubdir = dir(strcat(maindir,subdir(i).name));
    for j=1:length(subsubdir)
         if ~strcmp(subsubdir(j).name ,'.') && ~strcmp(subsubdir(j).name,'..')
            img=imread([maindir,subdir(i).name,'\',subsubdir(j).name]);
            imshow(img);
            str=num2str(num_begin,'%09d');
            newname=strcat(str,'.jpg');
            newname=newname(end-(name_long+3):end);
            system(['rename ' [maindir,subdir(i).name,'\',subsubdir(j).name] ' ' newname]);
            num_begin=num_begin+1;
            fprintf('当前处理文件夹%s',subdir(i).name);
            fprintf('已经处理%d张图片\n',n);
            n=n+1;
           pause(0.1);%可以将暂停去掉
         end
    end
  end
end
图片名如果比较特殊或者像1(1).jpg等这类可能无法重命名,可以使用imwrite,如:

  1. imwrite(img,strcat(save_path,newname));%改名后保存到另一文件夹,原图片不变  
imwrite(img,strcat(save_path,newname));%改名后保存到另一文件夹,原图片不变
也可以使用Total Commander来批量重命名,非常方便,推荐使用这个工具。
下载地址: Total Commander破解版
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值