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() # 显示图像