用Python的PIL模組進行基本的影象操作
阿新 • • 發佈:2019-02-04
本文為參考《Python計算機視覺程式設計》[美]Jan Erik Solem著的學習筆記。
#PIL的相關使用 from PIL import Image #open()方法用於建立PIL影象物件,返回一個PIL影象物件 pil_im=Image.open(r'D:\PYTHON35\idle\imagetest\testpic.jpg') #save()方法用於將圖片儲存成不同格式 pil_im.save(r'D:\PYTHON35\idle\imagetest\testpicopenformat.png') #convert()用於顏色轉換,這裡引數L表示轉換成灰度影象 pil_imL=Image.open(r'D:\PYTHON35\idle\imagetest\testpic.jpg').convert('L') pil_imL.save(r'D:\PYTHON35\idle\imagetest\testpicLopen.jpg')
原圖testpic.jpg:
灰度影象testpicLopen.jpg:
————————————————————————————————————————————
#建立一個包含資料夾中所有jpg影象檔案的檔名列表
import os
def get_imlist(path):
return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]
print(get_imlist(r'D:\PYTHON35\idle\imagetest'))
#從檔名列表filelist中讀取所有的影象檔案 filelist=os.listdir(r'D:\PYTHON35\idle\imagetest') print(filelist) #['imagebasic.py', 'testpic.jpg', 'testpicLopen.jpg', 'testpicopen.jpg', 'testpicopenformat.jpg', 'testpicopenformat.png'] for infile in filelist: outfile=os.path.splitext(infile)[0]+'.jpg' #分離檔名和副檔名 if infile!=outfile: #驗證檔案型別是否為‘.jpg’ try: Image.open(infile).save(outfile) #開啟‘.png'檔案,存成‘.jpg’檔案 print(outfile) #以‘.jpg’格式,輸出非‘.jpg’格式的圖片檔案 except IOError: print('connot convert',infile) #connot convert imagebasic.py
#thumbnail()方法用於將影象轉換成指定大小的縮圖,引數是元組
pil_imthumb=pil_im.thumbnail((256,256))#輸入的元組引數寬高和原影象寬高比不同,依據最小對應邊進行原比例縮放
pil_im.save(r'D:\PYTHON35\idle\imagetest\testpicthumbnail.jpg')##注意thumbnail處理後save作用的物件
縮圖testpicthumbnail.jpg:
——————————————————————————————————————————————
#crop()方法用於從一幅圖中裁剪指定區域,注意rgb影象定義座標系原點在左上 box=(80,80,200,200) region=pil_im.crop(box) #transpose()方法用於旋轉圖片,paste()方法用於將圖片放到指定區域 region=region.transpose(Image.ROTATE_90) pil_im.paste(region,box) pil_im.save(r'D:\PYTHON35\idle\imagetest\testpicCrRoPa.jpg')
裁剪,旋轉,貼上圖testpicCrRoPa.jpg:
——————————————————————————————————————————————
#建立一個包含資料夾中所有jpg影象檔案的檔名列表
import os
def get_imlist(path):
return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]
print(get_imlist(r'D:\PYTHON35\idle\imagetest'))
resize圖resizeL.jpg:
rotate45度圖rotateL.jpg: