#對圖片數據集的批處理
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('.'))