• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Python笔记八PIL库的使用

武飞扬头像
大块奶酪----
帮助1

PIL库支持图像存储、显示和处理,它能够处理几乎所有的图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。

1.  图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
2.  图像展示(Image Display)。PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
3.  图像处理(Image Processing)。PIL包括了基础的图像处理函数,包括3.对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

一、安装PIL库

我使用的是pip3.9,其目录为F:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Scripts,在DOS命令下,先转入安装目录下执行pip,安装PIL(pillow)

学新通

 二、图像处理

原图(tiger.jpg)

学新通

1.图像轮廓获取

  1.  
    from PIL import Image
  2.  
    from PIL import ImageFilter
  3.  
    im = Image.open("a.jpg")
  4.  
    im1 = Image.open("tiger.jpg")
  5.  
    om = im1.filter(ImageFilter.EDGE_ENHANCE)
  6.  
    om = im1.filter(ImageFilter.SMOOTH)
  7.  
    om = im1.filter(ImageFilter.CONTOUR)
  8.  
    om.save("tigerContur.jpg")

学新通

 2.颜色交换

r——>g,g——>b,b——>r

  1.  
    from PIL import Image
  2.  
    im = Image.open("tiger.jpg")
  3.  
    r,g,b = im.split()
  4.  
    om = Image.merge("RGB",(g,b,r))
  5.  
    om.save("tigerBGR.jpg")

学新通

 3.缩略图

  1.  
    from PIL import Image
  2.  
    im = Image.open("tiger.jpg")
  3.  
    im.thumbnail((128,128))
  4.  
    im.save("tigerTN","JPEG")

 学新通

4.对每个像素点进行操作

Image.point(func)根据函数func的功能对每个元素进行运算,返回图像副本

Image.split()提取RGB图像的每个颜色通道,返回图像副本

将R通道颜色值改为原来的0.9倍,选择B通道值低于100的像素点,合并3个通道的值

  1.  
    im = Image.open("tiger.jpg")
  2.  
    r,g,b = im.split()
  3.  
    newr = r.point(lambda i: i*0.9)
  4.  
    newb = b.point(lambda i: i<100)
  5.  
    om = Image.merge(im.mode,(newr,g,newb))
  6.  
    om.save("tigermerge.jpg")

学新通

 三、图像的字符画绘制

十二星座(astro.jpg)

学新通

定义彩色向灰值的转换公式如下,其中R、G、B分别为像素点的RGB颜色值

gray = int(0.2126*r  0.7152*g  0.0722*b)

灰度值0——255,黑色为0,白色为255

  1.  
    # 图像的字符画绘制
  2.  
    from turtle import width
  3.  
    from PIL import Image
  4.  
    ascii_char = list("****#ofkgjdifrfifrkabcdefghiklkjqigrudvwijvjk;*#(^*&#$^@(@:~")
  5.  
     
  6.  
    def get_char(r,b,g,alpha = 256):
  7.  
    if alpha == 0:
  8.  
    return ' '
  9.  
    gray = int(0.2126*r 0.7152*g 0.0722*b)
  10.  
    unit = 256//len(ascii_char)
  11.  
    return ascii_char[gray//unit]
  12.  
    def main():
  13.  
    im =Image.open('astro.jpg')
  14.  
    WIDTH,HEIGHT = 600,100
  15.  
    im = im.resize((WIDTH,HEIGHT))
  16.  
    txt = ''
  17.  
    for i in range(HEIGHT):
  18.  
    for j in range(WIDTH):
  19.  
    txt = get_char(*im.getpixel((j,i)))
  20.  
    txt ='\n'
  21.  
    fo = open("pic_char.txt","w")
  22.  
    fo.write(txt)
  23.  
    fo.close()
  24.  
    main()
学新通

执行后,打开其所在文件,如下图

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggecci
系列文章
更多 icon
同类精品
更多 icon
继续加载