在檢測中,需要把原始圖像轉換爲,與目標尺寸匹配的圖像,保持等比例,其餘部分用灰色填充。
pad_image
步驟:
- 計算按目標圖像縮放之後的寬高;
- resize()原始圖像;
- 新建目標尺寸
target_size
的圖像; - paste()貼圖,將縮放後的原始圖像,放入目標圖像中;
def pad_image(image, target_size):
iw, ih = image.size # 原始圖像的尺寸
w, h = target_size # 目標圖像的尺寸
scale = min(w / iw, h / ih) # 轉換的最小比例
# 保證長或寬,至少一個符合目標圖像的尺寸
nw = int(iw * scale)
nh = int(ih * scale)
image = image.resize((nw, nh), Image.BICUBIC) # 縮小圖像
image.show()
new_image = Image.new('RGB', target_size, (128, 128, 128)) # 生成灰色圖像
# // 爲整數除法,計算圖像的位置
new_image.paste(image, ((w - nw) // 2, (h - nh) // 2)) # 將圖像填充爲中間圖像,兩側爲灰色的樣式
new_image.show()
return new_image
測試:
def main():
img_path = './test_imgs/6412275179854758913.jpg'
image = Image.open(img_path)
size = (416, 416)
pad_image(image, size) # 填充圖像
if __name__ == '__main__':
main()
輸出:
OK, that’s all! Enjoy it!