美白,磨皮,搞笑图片处理
Posted wangyingjie123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了美白,磨皮,搞笑图片处理相关的知识,希望对你有一定的参考价值。
PIL库概述
PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装。
:>pip install pillow # 或者 pip3 install pillow
PIL库支持图像存储、显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作
PIL库可以完成图像归档和图像处理两方面功能需求:
图像归档:对图像进行批处理、生成图像预览、图像格式转换等;
图像处理:图像基本处理、像素处理、颜色处理等。
PIL库Image类解析
在PIL中,任何一个图像文件都可以用Image对象表示Image类的图像读取和创建方法。
要加载一个图像文件,最简单的形式如下,之后所有操作对im起作用
>>>from PIL import Image
>>>im = Image.open("D:\\pycodes\\birdnest.jpg")
Image类有4个处理图片的常用属性
生成"birdnest.jpg"图像的缩略图,其中(128,128)是缩略图的尺寸。
>>>im.thumbnail((128, 128))
>>>im.save("birdnestTN","JPEG")
Image类可以缩放和旋转图像,其中,rotate()方法以逆时针旋转的角度值作为参数来旋转图像。
Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作,split()方法能够将RGB图像各颜色通道提取出来,merge()方法能够将各独立通道再合成一幅新的图像。
微实例7.2:图像的颜色交换。 交换图像中的颜色。可以通过分离RGB图片的三个颜色通道实现颜色交换
操作图像的每个像素点需要通过函数实现,采用lambda函数和point()方法搭配使用,例子如下
>>>im = Image.open(‘D:\\pycodes\\birdnest.jpg‘) #打开鸟巢文件
>>>r, g, b = im.split() #获得RGB通道数据
>>>newg = g.point(lambda i: i * 0.9) # 将G通道颜色值变为原来的0.9倍
>>>newb = b.point(lambda i: i < 100) # 选择B通道值低于100的像素点
>>>om = Image.merge(im.mode, (r, newg, newb)) # 将3个通道合形成新图像
>>>om.save(‘D:\\pycodes\\birdnestMerge.jpg‘) #输出图片
PIL库的ImageFilter类和ImageEnhance类提供了过滤图像和增强图像的方法,共10种
图像的过滤和增强
利用Image类的filter()方法可以使用ImageFilter类,如下: Image.filter(ImageFilter.fuction)
微实例7.3:图像的轮廓获取。 获取图像的轮廓,北京鸟巢变得更加抽象、更具想象空间!
ImageEnhance类提供了更高级的图像增强需求,它提供调整色彩度、亮度、对比度、锐化等功能。
微实例7.4:图像的对比度增强。 增强图像的对比度为初始的20倍.
作业
缩略图
from PIL import Image im = Image.open(‘JZN.jpg‘) im.show() im = Image.open(‘JZN.jpg‘,‘r‘) im.thumbnail((128,128)) im.show()
from PIL import Image im = Image.open(‘JZN.jpg‘) r,g,b = im.split() om = Image.merge("RGB",(b,g,r))#交换颜色 om.save(‘JZNBGR.jpg‘) om.show()
from PIL import Image from PIL import ImageFilter im = Image.open(‘JZN.jpg‘) om = im.filter(ImageFilter.CONTOUR)#轮廓获取 om.save("JZNContour.jpg") om.show()
from PIL import Image from PIL import ImageFilter im = Image.open(‘JZN.jpg‘) im.filter(ImageFilter.EMBOSS).save(r‘JZN1.jpg‘)#浮雕 om = Image.open(‘JZN1.jpg‘) om.show()
将GIF分帧
from PIL import Image im = Image.open(‘BLACKPINK.gif‘) try: im.save(‘pic{:02d}.png‘.format(im.tell())) while True: im.seek(im.tell()+1) im.save(‘pic{:02d}.png‘.format(im.tell())) except: print("处理结束")
原图
结果
生成一个GIF图
import imageio def create_gif(image_list, gif_name, duration = 1.0): frames = [] for image_name in image_list: frames.append(imageio.imread(image_name)) imageio.mimsave(gif_name, frames, ‘GIF‘, duration=duration) return def main(): #这里放上自己所需要合成的图片 image_list = [‘1.jpg‘, ‘2.jpg‘, ‘3.jpg‘,‘4.jpg‘,‘5.jpg‘,‘6.jpg‘,‘7.jpg‘,‘8.jpg‘,‘9.jpg‘] gif_name = ‘new.gif‘ duration = 1.5 create_gif(image_list, gif_name, duration) if __name__ == ‘__main__‘: main()
原图
结果
以上是关于美白,磨皮,搞笑图片处理的主要内容,如果未能解决你的问题,请参考以下文章