數據處理(windows+ubuntu下文件批量命名,原圖分割子圖)

windows+ubuntu下文件批量命名ubuntu

在windows下能夠採用matlab程序來對全部文件按順序進行批量命名,以圖片爲例,代碼以下:windows

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下能夠採用在文件夾下的終端輸入腳本程序的方式,對全部文件按照順序進行批量命名,腳本程序以下:spa

# 先輸入下面兩行指令,按序號爲全部文件命名,並且爲了不與以前的名字衝突(好比以前的名字中有數字的狀況),全部名字後面加上字母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在原圖中分割子圖code

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
相關文章
相關標籤/搜索