Python笔记八PIL库的使用
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,100
-
im = 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()
执行后,打开其所在文件,如下图
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggecci
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13