导入模块
from PIL import Image
import numpy as np
from PIL import ImageEnhance # 图像增强
from PIL import ImageFilter # 图像滤波
Image方法
方法 | 作用 | 实例 |
---|---|---|
open() | 打开一个图像文件 | img=Image.open(‘image.jpg’) |
fromarray() | 将numpy数组转化为图片 | new_img=Image.fromarray(img_arr) new_img=Image.fromarray(np.unit8(img_arr)) |
new(mode,size,color) | 创建新图片 | newImg = Image.new(“RGBA”,(640,480),(0,255,0)) |
blend() | 两张图片相加 | Image.blend(img1,img2,alpha) # 这里alpha表示img1和img2的比例参数 |
img方法
方法 | 作用 | 实例 |
---|---|---|
show() | 显示这张图片 | img.show() |
save() | 存储图片 | new_img.save(‘newimagr.png’) |
format | 图像格式 | img.format |
mode | 图像类型 | img.mode L为灰度图,RGB为真彩色,RGBA含有透明度通道 |
size | 返回的是图像的宽高(w,h),不包含通道 | img.size |
ROI | 数组的切片操作 | roi = img[100:300,30:350,:] |
split() | 通道分离 | r,g,b=im.split() #分割成三个通道,此时r,g,b分别为三个图像对象 |
merge() | 通道合并 | im=Image.merge(“RGB”,(b,g,r)) #将b,r两个通道进行翻转 |
getbands() | 生成通道列表 | img_bands=img.getbands() |
getpixel() | 图像点的像素值 | img.getpixel((0,0)) |
putpixel() | 写某个像素位置的值 | img.putpixel((4,4),(255,0,0)) |
resize() | 图像缩放 | img.resize((h,w),Image.ANTIALIAS) Image.NEAREST :低质量 Image.BILINEAR:双线性 Image.BICUBIC :三次样条插值 Image.ANTIALIAS:高质量 |
rotate() | 图像旋转 | img.rotate(90) |
transpose() | 图像翻转 | img.transpose(Image.FLIP_TOP_BOTTOM)#上下翻转 img.transpose(Image.FLIP_LEFT_RIGHT)#左右翻转 img.transpose(Image.ROTATE_180) |
point() | 点操作 | out=im.point(lambdai:i*1.5) #对每个点进行50%的加强 |
crop() | 图片裁剪 | region=im.crop((100,100,500,500)) #此时,region是一个新的图像对象 |
paste() | 图像黏贴(合并) | im.paste(region,box) #粘贴box大小的region到原先的图片对象中 |
convert() | 图像类型转换 | im=im.convert(“RGBA”) |
np方法
方法 | 作用 | 实例 |
---|---|---|
array() asarray() | 将图片转化成numpy数组 | img_arr=np.array(img) |
ImageEnhance方法
方法 | 作用 | 实例 |
---|---|---|
Brightness() | 亮度 | ImageEnhance.Brightness(img).enhance(3) |
Color() | 色度 | ImageEnhance.Color(img).enhance(2) |
Contrast() | 对比度 | ImageEnhance.Contrast(img).enhance(3) |
Sharpness() | 锐度 | ImageEnhance.Sharpness(img).enhance(2) |
ImageFilter方法
类型 | 实例 |
---|---|
模糊滤波 | img_blur = img.filter(ImageFilter.BLUR) |
轮廓滤波 | img_contour = img.filter(ImageFilter.CONTOUR) |
细节滤波 | img_detail = img.filter(ImageFilter.DETAIL) |
边界增强滤波 | img_edge_enhance = img.filter(ImageFilter.EDGE_ENHANCE) |
锐化滤波 | img_sharp = img.filter(ImageFilter.SHARPEN) |
高斯模糊滤波 | img_gauss = img.filter(ImageFilter.GaussianBlur(radius=2)) # radius指定平滑半径,也就是模糊的程度。 |
图像模式
模式 | 描述 |
---|---|
1 | 1位像素,表示黑和白,但是存储的时候每个像素存储为8bit。 |
L | 8位像素,表示黑和白。 |
P | 8位像素,使用调色板映射到其他模式。 |
RGB | 3x8位像素,为真彩色。 |
RGBA | 4x8位像素,有透明通道的真彩色。 |
CMYK | 4x8位像素,颜色分离。 |
YCbCr | 3x8位像素,彩色视频格式。 |
I | 32位整型像素。 |
F | 32位浮点型像素。 |