数据处理(windows+ubuntu下文件批量命名,原图分割子图)

windows+ubuntu下文件批量命名

在windows下可以采用matlab程序来对所有文件按顺序进行批量命名,以图片为例,代码如下:

path = 'C:\Users\Administrator\Desktop\select_img\';%所有图片存放的路径
D = dir([path '*.jpg']);%将该路径下的所有文件读取成一个结构体
for i = 1:length(D)%遍历每一张图片
     image_name = D(i).name;%每一张图片的名字
     I = imread(strcat(path,image_name));%读取每一张图片
     nz	= strcat('%0',num2str(6),'d');%给该图片重命名名字的位数
     temp_id = sprintf(nz,i);%按序数给所有图片命名,前面补0
     name2 = strcat(temp_id,'.jpg');
     imwrite(I,name2);%以新名字保存图片
end

在ubuntu下可以采用在文件夹下的终端输入脚本程序的方式,对所有文件按照顺序进行批量命名,脚本程序如下:

# 先输入下面两行指令,按序号为所有文件命名,而且为了避免与之前的名字冲突(比如之前的名字中有数字的情况),所有名字后面加上字母a

declare -i num=0;

for name in `ls`;do mv -f $name `echo $num"a.jpg"`; num=num+1; done 


# 再输入下面两行指令,按照序号重新给所有文件命名

declare -i num=0;

for name in `ls`;do mv -f $name `echo $num".jpg"`; num=num+1; done

 根据ground truth在原图中分割子图

base_path = 'D:\image\people'; %所有原图路径
bb = importdata('output.txt');%所有原图对应的ground truth文件
output_img = cell(100);%这里假设原图有100张
for i = 1:100
    nz	= strcat('%0',num2str(4),'d');
    temp_id = sprintf(nz,i);
    id = strcat(temp_id,'.jpg');
    img_path = fullfile(base_path,id);
    temp_img = imread(img_path);
    output_img = temp_img(bb.data(i,2):bb.data(i,4),bb.data(i,1):bb.data(i,3),:);
    filename = strcat('D:\image\output\',temp_id,'.jpg');%分割出的子图保存路径
    imwrite(output_img,filename);
end

 

  

 

posted @ 2017-06-10 22:41  YYYYQQQQ  阅读(1057)  评论(0编辑  收藏  举报