电子说
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互转
img = Image.open("./data/猫咪图片.jpg")
arr = np.array(img)
print(arr.shape)
print(arr.dtype)
(641, 641, 3)
uint8
arr = (np.ones((256,256))*np.arange(0,256)).astype(np.uint8)
img = Image.fromarray(arr)
img
![图片](https://mmbiz.qpic.cn/mmbiz_png/4WgILHBwVHibuic4uM4wdMZ6sEA6Hs2B0eJ7Tq6y9TsNCNXAmlEavy1jsvgGbfcVGMNCkRR9VymibiaUHAfk6rF2FQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1)
## 三,图片与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)
全部0条评论
快来发表一下你的评论吧 !