一、图像处理
pillow是python imaging library的简称。常见的尺寸/格式/色彩/旋转等处理。引用是为from PIL import Image。PIL库安装目录在/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/PIL,该目录下有所有PIL下的函数。
1、图像处理基本知识
1)图像的RGB色彩模式
RGB三个颜色通过的变化和叠加得到各种颜色:例红色的RGB表示(255,0,0),绿色(0,255,0),黄色(255,255,0)
-R红色,取值范围0-255;
-G绿色,取值范围0-255;
-B蓝色,取值范围0-255;
2)像素阵列
数字图像可以看成一个整数阵列,阵列中的元素称为像素(Pixel),图像中的每个点都有一个像素,表示为(R,G,B)。
3)RGBA色彩模式:RGBA格式除了r,g,b三个bands之外多了个alpha,不透明度。
可以通过open('文件名').convert(mode='RGB')选择打开色彩模式。
2、Image模块
Pillow库中,使用Image模块可以从文件中加载图像/处理其他图像/从scratch中创建图像;
1)打开和新建
open(fp,mode) #打开文件,如果文件不存在,则返回IOError错误。fp打开文件的路径;mode可选,打开文件的方式,默认r;
new(mode,size,color=0) #新建图像,mode图片模式;size图片尺寸,宽和高组成的元组;color默认颜色(黑色),可以是常有颜色名称'red',十六进制颜色'#F0099',元组(255,255,0);
Pillow库支持的常用图片模式信息:
![](/i/l/?n=22&i=blog/1427760/202211/1427760-20221113064632129-1231308589.png)
【例1】使用Image打开一副图片
from PIL import Image #打开图片 im=Image.open('/Users/姓名/Desktop/image03.png') #显示图片 im.show() #查看图片的信息 print('图像格式:',im.format) print('图像大小,格式是(宽度,高度)',im.size) print('图像宽度:',im.width,'图像高度:',im.height) print('图像的格式:',im.mode) #RGBA格式除了r,g,b三个bands之外多了个alpha,不透明度。 print('读取坐标在(100,100)处的像素信息:',im.getpixel((100,100)))
结果:
图像格式: PNG 图像大小,格式是(宽度,高度) (606, 194) 图像宽度: 606 图像高度: 194 图像的格式: RGBA 读取坐标在(100,100)处的像素信息: (123, 163, 241, 255)
![](/i/l/?n=22&i=blog/1427760/202211/1427760-20221113071853110-1231345885.png)
2)混合
透明度混合处理:blend()实现透明度混合处理,语法:
blend(im1,im2,alpha) #im1,im2指参与混合的图片1/图片2,alpha混合透明度,取值0-1;混合过程为(im1*(1-alpha)+im2*alpha)
【例2】透明度混合图片
from PIL import Image im1=Image.open('/Users/姓名/Desktop/image03.png').convert(mode='RGB') im2=Image.new('RGB',im1.size,'red') #新创建图像 #混合两幅图 Image.blend(im1, im2, alpha=0.5).show()
遮罩混合处理:composite()实现,语法:
composite(im1,im2.mask) #im1/im2为混合处理图片,mask也为图像,mode可以为'1'/'L'/'RGBA',大小要和im1/im2一样。功能是使用mask来混合im1/im2图片,要求三张图片尺寸相同。
Image.split()方法用于将图像分成单独的波段。此方法从图像返回单个图像带的元组。分割“RGB”图像会创建三个新图像,每个图像都包含一个原始波段(红色,绿色,蓝色)的副本。
【例3】遮罩混合图片
from PIL import Image im1=Image.open('/Users/姓名/Desktop/image03.png').convert(mode='RGB') im2=Image.open('/Users/姓名/Desktop/image04.png').convert(mode='RGB') im2=im2.resize(im1.size) r,g,b=im2.split() Image.composite(im2,im1,b).show() #b.size返回(606, 194);b.mode返回L;
![](/i/l/?n=22&i=blog/1427760/202211/1427760-20221113074723977-702842861.png)
标签:python,Image,im1,图像处理,mode,图像,im2,pillow,255 From: https://www.cnblogs.com/min222/p/16882645.html