文件批量重命名

来源:互联网 发布:应用商店要windows更新 编辑:程序博客网 时间:2024/05/21 08:57

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


0.文件夹名

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

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

1.图片命名

虽然说图片名对训练没什么影响,但建议还是按VOC2007那样,如“000005.jpg”这种形式。至于图片格式,代码里是写的jpg。
批量修改图片名字为VOC2007格式可以参考以下Matlab代码:
[plain] view plain copy
print?
  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开始的话就是123subdir = 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  endend
图片名如果比较特殊或者像1(1).jpg等这类可能无法重命名,可以使用imwrite,如:

[html] view plain copy
print?
  1. imwrite(img,strcat(save_path,newname));%改名后保存到另一文件夹,原图片不变  
imwrite(img,strcat(save_path,newname));%改名后保存到另一文件夹,原图片不变
也可以使用Total Commander来批量重命名,非常方便,推荐使用这个工具。
下载地址:Total Commander破解版
原创粉丝点击