Pillow图像处理库入门

Pillow图像处理库入门
matplotlib.image - 仅支持导入PNG格式图像,功能有限

PIL(Python Imaging Library)

from PIL import Image # 导入PIL.image模块
import matplotlib.pyplot as plt # 显示图片 导入模块
import numpy as np

plt.figure(figsize=(15, 20)) # 设置画布大小

img = Image.open("Test.tiff") # 打开图像 返回image图像
img1 = Image.open('Test.jpg')
img2 = Image.open('Test.bmp')

img.save("test.bmp") # 保存图像 更换文件名后缀,更改图像格式

imgs = [img, img1, img2]

for i in range(3):
plt.subplot(3, 3, i+1)
plt.axis('off')
plt.imshow(imgs[i]) # 加载图像 (img对象/Numpy数组)
plt.title(imgs[i].format)
plt.tight_layout() # 标题自动适应

img.format # 图像格式

img.size # 图像尺寸

img.mode # 色彩模式

转化图像的色彩模式

img_gray = img.convert("L") # (色彩模式)

plt.subplot(3, 3, 4)
plt.imshow(img_gray)

img_gray.save('Test_gray.bmp')

颜色通道的分离与合并

img_r, img_g, img_b = img.split()

Image.merge() # (色彩模式,图像列表)

plt.subplot(3, 3, 5)
plt.axis('off')
plt.imshow(img_r, cmap='gray') # 加载图像 (img对象/Numpy数组)
plt.title("R", fontsize=20)

plt.subplot(3, 3, 6)
plt.axis('off')
plt.imshow(img_g, cmap='gray') # 加载图像 (img对象/Numpy数组)
plt.title("G", fontsize=20)

plt.subplot(3, 3, 7)
plt.axis('off')
plt.imshow(img_b, cmap='gray') # 加载图像 (img对象/Numpy数组)
plt.title("B", fontsize=20)

img_rgb = Image.merge("RGB", [img_r, img_g, img_b]) # (色彩模式,图像列表)
plt.subplot(338)
plt.axis('off')
plt.imshow(img_rgb) # 加载图像 (img对象/Numpy数组)
plt.title("B", fontsize=20)

转化为数组

img_arr = np.array(img)
img_arr_gray = np.array(img_gray) # 灰度图像
img_arr_new = 255-img_arr_gray # 反色处理

对图像缩放,旋转和镜像

缩放

img_small = img.resize((64, 64)) # ((width, height))

旋转

img_r90 = img.transpose(Image.ROTATE_90) # 逆时针旋转90°

裁剪

img_crop = img.crop(()) # ((x0, y0, x1, y1)) 左上 右下
'''
1 二值图像
L 灰度图像
P 8位彩色图像
RGB 24位~
RGBA 32位~
CMYK CMYK彩色图像
YCbCr YCbCr~
I 32位整形灰度图像
F 32位浮点灰度图像
'''

plt.show() # 显示图像

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容