码迷,mamicode.com
首页 > 其他好文 > 详细

美白,磨皮,搞笑图片处理

时间:2020-05-07 09:28:28      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:ack   图像   格式转换   生成   表示   lib   原来   code   基本   

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(rJZN1.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()

原图

技术图片

 

 结果

技术图片

美白,磨皮,搞笑图片处理

标签:ack   图像   格式转换   生成   表示   lib   原来   code   基本   

原文地址:https://www.cnblogs.com/wangyingjie123/p/12840242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!