【Pillow库——图像处理一】

目录

一、图像处理基本知识

二、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),理论上操作每个点的三个数字就可以实现任何图形 

二、Image模块 

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()
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

In my opinion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值