PIL:Python Imaging Library,是Python環境下最受歡迎的圖像處理庫,木有之一。然而,在Python2.7之后不再支持。
好在又有了pillow!它派生于PIL,支持Python3,簡單優雅而功能強大,是圖像相關機器學習任務中算法工程師的親密合作伙伴。
下面我們將介紹pillow的16個圖片處理功能:
1, 圖片讀寫
2, 圖片與array互轉
3, 圖片與string互轉
4, 圖片由彩色轉灰度
5, 圖片通道分離與合并
6, 調整圖片尺寸
7, 截取圖片部分區域
8, 圖片旋轉
9, 圖片翻轉
10, 提取圖片邊緣
11, 圖片高斯模糊
12, 在圖片上繪制文字
13, 在圖片上繪制直線
14, 在圖片上繪制矩形
15, 在圖片上繪制橢圓
16, 在圖片上粘貼其他圖片
〇,安裝
安裝pillow非常簡單。
pip install pillow
一,圖片讀寫
import numpy as np
from PIL import Image,ImageFilter,ImageDraw,ImageFont
# 讀取圖片
img = Image.open("./data/貓咪圖片.jpg")
print(img.format, img.size, img.mode)
print(img.info)
img
JPEG (641, 641) RGB
{'jfif': 257, 'jfif_version': (1, 1), 'dpi': (72, 72), 'jfif_unit': 1, 'jfif_density': (72, 72)}
保存圖片
img.save("./data/貓咪圖片.png")
## 二,圖片與array互轉
Image轉np.array
img = Image.open("./data/貓咪圖片.jpg")
arr = np.array(img)
print(arr.shape)
print(arr.dtype)
(641, 641, 3)
uint8
np.array轉Image
arr = (np.ones((256,256))*np.arange(0,256)).astype(np.uint8)
img = Image.fromarray(arr)
img

## 三,圖片與string互轉
Image轉string
import base64
from io import BytesIO
img = Image.open("./data/貓咪圖片.jpg")
buffer = BytesIO()
img.save(buffer, 'PNG')
b = buffer.getvalue()
s = base64.b64encode(b).decode("utf-8")
print(s[0:1000])
iVBORw0KGgoAAAANSUhEUgAAAoEAAAKBCAIAAACnMebvAAEAAElEQVR4nOz96bMtSXIfiLl7ROR2lru+raqrqxsEQBAkRuKMRHI0kj6OSTLJ9M+KRumTTJwxyWZGJm6DIQguAHqp7lree3c5S2ZGhLs+eIbfOOe+V13dKGxjCHt27b5z82RGRnj4z3fHT69fJB3CiEhEDCIi5H1KKQt775umEYRpmsZx/PGnn3Vd94tf/OLu7u7y8lJExnG8uro6Ho/ee+ccMwNA13UXFxebzeZnP/uZcw4R53k+Ho/TNIkIIiIiMxMREaWUcs6bzebm5mae5/1+H2NsmiaEkHOe55mZvfcAkFKa5xkA9OL1er3ebv/oj/7IOSciOUbv/cPDAwr0fb/uh5ubmxDCeDgi4vF4/NnPfjYHBAAsQ38HgJxzSklEiAgARKRt22EYmqaZpul4PM7zbDMXEfgbMnSqurP2EwDGcaz/axf/DXq1aZq6rgMAEfmd3/mdm5ubn/3sZz//+c9TSgCgJCEiIYS+7+d5nqYp5+y9R8Scs4g45z5287NdtrUaOdknKICIZNfI8tOWlABczuv1uuu6lNI0TXo6mFkncHZ/AEhxdM7ps5TenHPOuZTSarXquo6Z7eAw80wZAHJMMUZP5L3PMY2Ho3Nuu1oPfS8iHJOIcMoxRiYnIjlnvQ8UCsk5O+dCCCEEXRb9PMWdnt+cc4wx50xEeuXxeBSRYRj6vnfO6XmJhwcqQ99UxzAMIqK/1y8ukpUVzPOsR7tt26ZphmGwZdEn6jQaDHoHRBTCnPM4juM89X2/Px6dcxcXF74JMcYQwna7TeCULyknSSkhovfezoWus1F+hFnXvGmapml0bjlnKIxCr0TEEIL3fjelpml0xexk7ff74/GoX1TmZqv9W3/3d66vr5l5HMfNsOr7npkJMMYoOSsnzjEpt5znOca42+2Ucg6HwzzPV1dXn3766YsXL0IIXdc1TQMA8zyP4xhj
# string轉Image
b = base64.b64decode(s.encode("utf-8"))
buffer = BytesIO(b)
img = Image.open(buffer)
img
四,圖片由彩色轉灰度
# 轉成灰度
img = Image.open("./data/貓咪圖片.jpg")
img.convert("L")
五,圖片通道分離與合并
# 分離通道
img = Image.open("./data/貓咪圖片.jpg")
r,g,b = img.split()
b
# 合并通道
Image.merge(mode = "RGBA", bands = [r,g,b,r])
六, 調整圖片尺寸
# 調整大小
img = Image.open("./data/貓咪圖片.jpg")
print(img.size)
img_resized = img.resize((300,300))
print(img_resized.size)
img_resized
(641, 641)
(300, 300)
七, 截取圖片部分區域
img = Image.open("./data/貓咪圖片.jpg")
img_croped = img.crop(box = [78,24,455,320])
print(img_croped.size)
img_croped
(377, 296)
-
圖像處理
+關注
關注
27文章
1325瀏覽量
57703 -
機器學習
+關注
關注
66文章
8490瀏覽量
134080 -
python
+關注
關注
56文章
4825瀏覽量
86172
發布評論請先 登錄
【建議收藏】Python庫大全
Python基礎-圖像處理工具包
Python圖像處理庫Pillow入門教程和代碼資料免費下載

詳解Python中的Pandas和Numpy庫
關于python中非常實用的一個圖像處理庫 2
如何安裝常用Python庫
python讀取數據庫數據 python查詢數據庫 python數據庫連接
如何安裝Python圖像處理PIL庫

評論