前言
爲了在pytorch中進行深度學習的時候儘可能的採用正方形圖片作爲輸入,需要將自己做的樣本圖片最好轉化爲正方形圖片。具體的見代碼,代碼中有每一行的註釋。
python代碼
from PIL import Image
import os
def Square_Generated (read_file): # 創建一個函數用來產生所需要的正方形圖片轉化
image = Image.open(read_file) # 導入圖片
w, h = image.size # 得到圖片的大小
# print(w,h)
new_image = Image.new('RGB', size=(max(w, h), max(w, h)),color= 'white') # 創建新的一個圖片,大小取長款中最長的一邊,color決定了圖片中填充的顏色
# print(background)
length = int(abs(w - h)) # 一側需要填充的長度
box = (length, 0) if w < h else (0, length) # 放在box中
new_image.paste(image, box) #產生新的圖片
new_image=new_image.resize((256,256)) #對圖片進行縮放處理,這一步可以省略,GPU內存不足了,只能縮小跑CNN,試試效果
return new_image
# source_path = './pics_GeneratedSqare_Test/'
# save_path = './square_pictureGenerated/'
source_path = './jitter_pictureGenerated/' # 矩形圖片存放的路徑
save_path = './Train_jitter_Square/' # 新產生的正方形圖片存放的路徑
if not os.path.exists(save_path):
os.mkdir(save_path)
file_names = os.listdir(source_path) # 獲取矩形圖片的名字
for i in range(len(file_names)): # 循環批量處理
img = Square_Generated(source_path + file_names[i]) # 通過函數批量獲取新的正方形圖片
img.save(save_path+file_names[i],'PNG') # 保存圖片
print('number',i)
print(img)