深度處學習筆記三:批量rename、resize數據集

參考Mike高的視頻
數據集下載地址(ppw3)

#對圖片數據集的批處理
import os
import numpy as np
from PIL import Image
#重新命名
def FileReName(DogType,FilePath):
  type_counter = 0 #類的序號
  for type in DogType:  #DogType是所有犬的種類,type遍歷每一類犬
    #
    file_counter = 0  #第幾張照片
    subfolder = os.listdir(FilePath+type) #..Raw_Img/erha路徑下的每一個文件
    for subclass in subfolder: #subclass:圖片的現有名稱
      file_counter += 1
      print(file_counter)
      print('typr_counter:',type_counter)
      print(subclass) 
      #type_counter和file_counter都是整數,加到路徑中需要轉化爲字符串
      os.rename(FilePath+type+'/'+subclass,FilePath+type+'/'+str(type_counter)+'_'+str(file_counter)+'.jpg')#第一個參數是原來的名字
    type_counter+=1

#修改圖片尺寸
def FileReSize(Output_folder,DogType,FilePath,Width=100,Height=100):
  for type in DogType:
    for i in os.listdir(FilePath+type):
      img_open = Image.open(FilePath+type+'/'+i) #讀取每張圖片
      conv_RGB = img_open.convert('RGB')
      Resized_img = conv_RGB.resize((Width,Height),Image.BILINEAR)#用雙線性插值方法處理圖片
      Resized_img.save(os.path.join(Output_folder,os.path.basename(i)))

#讀取圖片返回numpy的array數組
def ReadImage(filename,train_folder):
  img = Image.open(train_folder+filename)
  return np.array(img)

#把圖片加載到列表  圖像 標籤

def DataSet(train_folder):
  Train_list_img = []
  Train_list_label = []
  for file_1 in os.listdir(train_folder):
    file_img_to_array = ReadImage(filename=file_1,train_folder=train_folder)
    #添加圖片數據到主list裏面
    Train_list_img.append(file_img_to_array)
    Train_list_label.append(int(file_1.split('_')[0]))#圖片名稱最前面的那個數字是類別
    #print(Train_list_label)
  Train_list_img =  np.array(Train_list_img)
  Train_list_label =  np.array(Train_list_label)
  print(Train_list_img.shape)


if __name__ == "__main__":
  DogType = ['erha','demu','labuladuo','samoye']
  #修改名字
  FileReName(DogType=DogType,FilePath='/content/drive/My Drive/app/my_image/DogRaw/')
  #修改尺寸
  FileReSize(DogType=DogType,FilePath='/content/drive/My Drive/app/my_image/DogRaw/',Output_folder='/content/drive/My Drive/app/my_image/DogRawTrain/')
  DataSet(train_folder='/content/drive/My Drive/app/my_image/DogRawTrain/')

下面是圖片定義的一些方法:

#
import random
import os
import numpy as np
import 
seed = 'ascvflmvoprmbprobmorpbrbntbd'

#
ran_name = []

for i in range(7):
  choice = random.choice(seed)
  ran_name.append(choice)#得到一個字符串數組
  #print(choice)
print('第一種定義方法-》》',''.join(ran_name))#''.join(字符數組)得到一個字符串

#ran_name2 = [name2 for name2 in range(10)]
#print(ran_name2)#得到一個數字數組

ran_name2 = [name2 for name2 in random.sample(seed,6)]
print(ran_name2)
#轉化爲字符串
ran_name2 = ''.join([name2 for name2 in random.sample(seed,6)])
print(ran_name2)


ran = [i for i in range(101)]
#print(ran) #打印1~101的所有數字(不包括101)
#print(np.min(ran)) #打印最小的數字0
print(np.max(ran)) #100
#第三種自定義名字方法
#在1000~9999之間隨機選取一個名字
ran_name3 = random.randint(1000,9999)
print(ran_name3)

#獲取路徑中的文件名
path = '/content/drive/My Drive/app/my_image/test5.jpg'
#打印test5.jpg
#os.path.basename(path)取最後一個斜槓後面的所有東西
print(os.path.basename(path))

file = 'dog.jpg'
#拆分得到一個字符串數組
print(file.split('.'))






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章