目录
一、图像处理基本知识
二、Image模块
1.图像的RGB色彩模式
RGB三个颜色的变化与叠加得到各种颜色,取值范围:
红色(R):0~255
绿色(G):0~255
蓝色(B):0~255
RGB表示:
红色(255,0,0) 绿色(0,255,0) 蓝色(0,0,255)
黄色(255,255,0) 黑色(0,0,0) 白色(255,255,255)
2.像素阵列:数字图像可以看作一个整数阵列,阵列中的元素称为像素,每个点代表一个像素,一个像素包含3个字节(R,G,B),理论上操作每个点的三个数字就可以实现任何图形
1.在Pillow库中,通过使用Image模块,可以从文件中加载图像,或者处理其他图像,首先需要打开要处理的图片,当文件不存在时,会引发IOError错误。使用函数open语法格式:
open(fp,mode)
fp:打开文件的路径
mode:可选参数,表示打开文件的方式,通常默认使用r
2.打开显示图片操作:
from PIL import Image
#打开图片
img=Image.open('cat.jpg')
#显示图片
img.show()
print("图片的格式:",img.format)
print("图片的大小:",img.size)
print("图片的高度:",img.height)
print("图片的宽度:",img.width)
print("获取(50,50)处的像素值:",img.getpixel((50,50)))
3.图像混合操作:使用bend()函数j将两幅图片(尺寸相同)实现透明度混合处理,语法:
blend(im1,im2,alpha)
alpha:0~1,当为0时显示im1原图片,当为1时显示im2原图片
from PIL import Image
img1=Image.open('cat.jpg').convert(mode='RGB')
img2=Image.new('RGB',img1.size,'red')
Image.blend(img1,img2,alpha=0.5).show()
4.遮罩混合处理:使用函数composite()实现遮罩混合处理,语法:
composite(im1,im2,mask)
mask也是一个图像,mode可以是“1”,“L”,“RGBA”三者尺寸一样
from PIL import Image
img1=Image.open("cat.jpg")
img2=Image.open("dog.jpg")
img2=img2.resize(img1.size) #两个图片尺寸不一样时
r,g,b=img2.split()
Image.composite(img1,img2,b).show()
5.图像的复制:copy()函数
像素的缩放:eval()函数
eval(image,fun)
fun:给输入图片的每个像素应用此函数,只接收整型
图像的缩放:thumbnail(size,resample)
from PIL import Image
#按照像素缩放
img1=Image.open('cat.jpg')
#每个像素扩大二倍
Image.eval(img1,lambda x:x*2).show()
#按照尺寸进行缩放
img2=img1.copy()
img2.thumbnail((200,200))
img2.show()
6.图像的粘贴:paste()函数将源图像或像素粘贴到该图像中
paste(im,box,mask)
box 是粘贴的区域,三种情况:
1.(x1,y1) :将源图像左上角对齐(x1,y1) 点,其余超出被粘贴图像的区域被抛弃。2. (x1,y1,x2,y2) :源图像与此区域必须一致。
3.None:源图像与被粘贴的图像大小必须一致。
图像裁剪:crop()函数
crop(box=None),box定义左上右下四个坐标
from PIL import Image
img=Image.open("cat.jpg")
img1=img.copy()
img2=img.copy()
#剪切
img_crop=img1.crop((15,15,100,100))
#粘贴
img2.paste(img_crop,(20,20))
img2.show()
7.图像的旋转:rotate(angle)返回图像绕其中心逆时针旋转给定的角度
格式转换:transpose(method)函数
from PIL import Image
img=Image.open('cat.jpg')
#img.rotate(90).show()
#img.transpose(Image.FLIP_TOP_BOTTOM).show() #上下滤镜
#img.transpose(Image.FLIP_LEFT_RIGHT).show() #左右滤镜
#img.transpose(Image.ROTATE_90).show() #90°滤镜
#img.transpose(Image.ROTATE_180).show() #180°滤镜
img.transpose(Image.TRANSPOSE).show() #颠倒滤镜
8.图像的分离:split()函数
图像的合并:merge(mode,bands)
from PIL import Image
img1=Image.open("cat.jpg")
img2=Image.open("dog.jpg")
img2=img2.resize(img1.size)
r1,g1,b1=img1.split()
r2,g2,b2=img2.split()
temp=[r1,g1,b2]
img=Image.merge('RGB',temp)
img.show()
9.图像的滤镜:filter(filter)函数可以对指定图片使用滤镜效果
from PIL import Image,ImageFilter
img=Image.open("cat.jpg")
w,h=img.size
img_output=Image.new('RGB'(2*w,h))#创建一个新的图像
img_output.paste(img,(0,0))
filters=[]
img_filter1=img.filter(ImgeFilter.GaussianBlur) #高斯滤镜
img_filter2=img.filter(ImgeFilter.EDGE_ENHANCE)#边缘增强滤镜
img_filter3=img.filter(ImgeFilter.FIND_EDGES)#寻找边缘滤镜
filters.append(img_filter1)
filters.append(img_filter2)
filters.append(img_filter3)
for img_filter in filters:
img_output.paste(img_filter,(w,0))
img_output.show()