首頁 > 軟體

python批次處理將圖片進行放大範例程式碼

2021-12-08 16:00:31

python批次處理圖片放大

有時候對於網路識別,將原始圖片放進網路中並不能達到自己想要的效果,但是有時候如果將圖片放大之後,識別率卻能夠達到意想不到的結果,現在提供一種將檔案中的圖片進行批次處理放大的程式碼:

import os
​
from PIL import Image
import sys
 
 
#獲取path目錄下的所有檔案
def get_imlist(path):
    return[os.path.join(path,f)
           for f in os.listdir(path)]
 
 
def change_size(path):
    directorys=get_imlist(path)
    for directory in directorys:
    #不是圖片檔案就跳過
        print(directory)
        if not(directory.endswith('.jpg') or directory.endswith('.png') or directory.endswith('.bmp')):  ##b
            pass
        else:
            img=Image.open(directory)
            s="/"
            #獲取檔名(含字尾)
            oimage_name=directory[directory.rfind(s)+1:]
            (oimage_width,oimage_height)=img.size
            new_width=oimage_width * 3
            new_height=oimage_height * 3
            out=img.resize((new_width,new_height),Image.ANTIALIAS)
            out.save("%s" %oimage_name)  #直接替換
 
 
if __name__ == '__main__':
    change_size("F:桌面\test")

python 圖片比例縮放、批次處理(分步驟完成)

問題:實現將畫素n*n的圖片 等比例縮放為 30*30

0、環境要求:Python3.x 需要安裝pillow模組:

pip install pillow

1、縮放一個圖片:

from PIL import Image
 
img = Image.open("2.png")    # 讀取圖片
out = img.resize((30,30))    # 等比例縮放為30*30畫素
out.save("2.png")            # 儲存圖片(覆蓋原圖)

2、批次處理:

/* 目錄結構
E:data_eglip_train:
           ----------folder1:
                     --------pic1.png
                     --------pic2.png
                     --------pic3.png
           ----------folder2:
                     --------pic1.png
                     --------pic2.png
                     --------pic3.png
                     --------pic4.png
                     --------pic5.png
           ----------folder3:
                     --------pic1.png
                     --------pic2.png
*/
 
 
import os
from PIL import Image
 
path_target = "E:data_eglip_train"  # liptrain路徑下是資料夾,資料夾下是多張圖片
 
path_list=os.walk(path_target)        # 使用os.walk()方法,遍歷所有路徑,檔案
 
# filenames 儲存所有圖片名的 list
# root 儲存二級目錄
for root, dirs, filenames in path_list:
	for filename in filenames:                         # 遍歷包含 所有檔名 的list
		file_path = os.path.join(root,filename)    # 合成得到每個圖片的 絕對路徑
		print(file_path)                           # 列印 絕對路徑 至螢幕
		img = Image.open(file_path)                # 開啟 此絕對路徑 的圖片
		out = img.resize((30,30))                  # 等比例縮放至 30*30 畫素
		#out = img.convert('L')                    # 轉換為灰度影象
		out.save(file_path)                        # 儲存,覆蓋原圖片

總結

到此這篇關於python批次處理將圖片進行放大的文章就介紹到這了,更多相關python批次處理圖片放大內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com