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.图像轮廓获取

from PIL import Image
from PIL import ImageFilter
im = Image.open("a.jpg")
im1 = Image.open("tiger.jpg")
om = im1.filter(ImageFilter.EDGE_ENHANCE)
om = im1.filter(ImageFilter.SMOOTH)
om = im1.filter(ImageFilter.CONTOUR)
om.save("tigerContur.jpg")

2.颜色交换

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

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

3.缩略图

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

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

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

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

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

im = Image.open("tiger.jpg")
r,g,b = im.split()
newr = r.point(lambda i: i*0.9)
newb = b.point(lambda i: i<100)
om = Image.merge(im.mode,(newr,g,newb))
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

# 图像的字符画绘制
from turtle import width
from PIL import Image
ascii_char = list("****#ofkgjdifrfifrkabcdefghiklkjqigrudvwijvjk;*#(^*&#$^@(@:~")def get_char(r,b,g,alpha = 256):if alpha == 0:return ' ' gray = int(0.2126*r +0.7152*g +0.0722*b)unit = 256//len(ascii_char)return ascii_char[gray//unit]
def main():im =Image.open('astro.jpg')WIDTH,HEIGHT = 600,100im = im.resize((WIDTH,HEIGHT))txt = ''for i in range(HEIGHT):for j in range(WIDTH):txt += get_char(*im.getpixel((j,i)))txt +='\n'fo = open("pic_char.txt","w")fo.write(txt)fo.close()
main()

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

Python笔记八:PIL库的使用相关推荐

  1. Python 之 使用 PIL 库做图像处理

    http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html Python 之 使用 PIL 库做图像处理 1. 简介. 图像 ...

  2. Python使用Pillow(PIL)库实现验证码图片

    Python使用Pillow(PIL)库实现验证码图片 Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片. Pillow的用法参考:https://blog.csdn.net/we ...

  3. 利用Python中的PIL库去处理图片

    利用Python处理图片,任选一张图片,用PIL抓取并显示图像轮廓. 安装PIL在cmd中输入 pip install pillow 今天我们所用到的原图为蕾姆的一张图片 下面就让我们看下Python ...

  4. Python笔记:bisect库简介

    Python笔记:bisect库简介 1. bisect库是什么 2. 二分查找操作 1. bisect内置函数说明 2. 单纯的二分查找实现方法 3. 插入 & 删除操作 1. 数据的插入 ...

  5. Python笔记:itertools库简介

    Python笔记:itertools库简介 1. itertools库是什么 2. itertools库函数简介 1. 元素迭代相关 1. count 2. cycle 3. repeat 2. 排列 ...

  6. Python 技术篇-用PIL库旋转图片、改变图像尺寸

    首先需要安装 PIL 库,直接pip install pillow就好了. 旋转包括 transpose() 和 rotate() 两种方式. resize((a, b)) 是用来改变图片尺寸的. # ...

  7. image pil 图像保存_如何利用python中的PIL库做图像处理?

    自从这个世界上出现了Python编程,一切都好像有了新的思路与进展,比如人工智能,还有我们常用的PS,你可知道Python也可以做图像处理,用的就是PIL库,还没有用过的,还没有发现的,还没有实现过的 ...

  8. python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...

    前言 最近的一个项目中需要在图片上添加文字,使用了OpenCV,结果发现利用opencv给图像添加文字有局限.可利用的字体类型比较少,需要安装Freetype扩展,比较复杂.而且不能用putText函 ...

  9. Python之Pillow(PIL)库

    目录 安装Pillow 基本操作 打开本地图片 裁剪 创建一张新图片 绘制矩形 水平翻转的图像 垂直翻转的图像 调整图像大小 照片复制 图片添加文字 水印图片 与Numpy一起使用 从Numpy数组创 ...

最新文章

  1. 1 秒钟打造智能化视频内容生产利器
  2. oenwrt 进不了bios_win7进不了bios原因及解决办法
  3. Java SE 7 Update 25 –发行说明进行了解释。
  4. ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补
  5. 大白话5分钟带你走进人工智能-第31节集成学习之最通俗理解GBDT原理和过程
  6. 修改mysql root的秘密
  7. javaweb + websocket实现客户端
  8. SQl盲注原理及其简单演示
  9. 自适应滤波器5-最小二乘法(LSM)
  10. 多媒体行业 常用英语
  11. html的根标签是什么,html标签
  12. 少年宫计算机活动总结改进措施,少年宫乒乓球的活动总结
  13. 文献检索——Web of Science|CSDN创作打卡
  14. python实现字符串去重
  15. 计算机等级考试sumif,sumif函数的使用方法有哪些
  16. 轻轻松松背单词软件测试,Englishfield词汇记忆与测试
  17. Vue面试题分享之Vue双向绑定数据原理
  18. 0基础学RS(二十七)ACL访问控制列表
  19. linux命令行界面鼠标,有趣的Linux命令:小猫咪追鼠标
  20. css过渡和css动画的区别是什么?

热门文章

  1. 小心通过QQ尾巴中的网址(Q-Zone qq C0M)传播的Worm Win32 Viking r
  2. 王者荣耀体验服什么叫服务器未响应,王者荣耀体验服登陆不进去怎么回事 体验服版本错误解决方法...
  3. kubernetes资源命名约束和最佳实践
  4. 王者荣耀改名神器微信小程序源码下载
  5. Mac中如何查看java版本
  6. Eclipse安装插件长时间停留在calculating requirements and dependencies
  7. python三引号怎么换行_python三引号怎么使用
  8. 如何使用JavaScript获取URL的协议?
  9. 程序员被误会得实在是太太太太太太深了!!!
  10. ubuntu绝对路径和相对路径自动补全