前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python---PIL库图像处理

python---PIL库图像处理

作者头像
sjw1998
发布2019-09-28 12:45:55
2.1K0
发布2019-09-28 12:45:55
举报
文章被收录于专栏:孤独的S孤独的S孤独的S

这里主要说的是PIL, PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。其官方主页为:PIL。 PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow

所以直接给你电脑安装pillow就可以使用了

pip install pillow

首先先获取图片,然后对图片修改尺寸。

图片原图:

代码:

from PIL import Image
image = Image.open('lufei.png')
image = image.resize((150, 200), Image.ANTIALIAS)
print(type(image))

将图片转换为灰度值图像用convert函数:

代码:

from PIL import Image
image = Image.open('lufei.png')
m = image.convert('L')
m.show()

效果:

将图片保存则用save函数:

m.save('lefei.png')

如果想将灰度值还原为rgb的格式,只需要底下在写一条句子,将L换成RGB

将灰度值反相,可以得到一种不一样的效果,将灰度值转为矩阵,再用255-去矩阵的数值,接着用fromarray函数还原成Image的格式。

from PIL import Image
import numpy as np
image = Image.open('lufei.png')
im = image.convert('L')
m = np.array(im)
m = 255-m
img =Image.fromarray(m)
img.show()

将图片的颜色通道分离用split函数:

from PIL import Image
image = Image.open('lufei.png')
image.show()
r,g,b = image.split()
r.show()
g.show()
b.show()

将图片的颜色通道合并用merge函数:

from PIL import Image
image = Image.open('lufei.png')

r,g,b = image.split()
im_merge = Image.merge("RGB",[b,g,r])
im_merge.show()

不同的rgb排列方式会得到不同的颜色效果

对图片的像素操作,强化像素的效果:

左边为像素值*1.5,中间原图,右边*2.5的效果比较

point()函数:

from PIL import Image
image = Image.open('lufei.png')
im_point = image.point(lambda x:x*2.5)
im_point.show()

小应用:

利用python做一个图像转字符串,并保存到文本之中。

首先导入PIL库和numpy库

读取图片,并将图片重新调整大小,接着转换为矩阵,转换为矩阵的时候,

矩阵是一个(x,y,z)的数据,x和y是他的长和宽,然后z是他的rgb数值,0就是r,1就是g,2就是b。

然后定义一个数值转换为字符的字符表备用

接着做一个转换函数,按一定比例,将一定的rgb数据转为特定字符,接着再利用之前获取到的矩阵的长度和宽度,获取矩阵的像素的rgb数据,传给转换函数C,再将获得到的字符串写入文本文件即可

from PIL import Image
import numpy as np
image = Image.open('lufei.png')
image = image.resize((150, 200), Image.ANTIALIAS)
img = np.array(image)
x = np.shape(img)
W = x[0]
H = x[1]
C_char = list(" 0")
def C(r,g,b):
    leng = len(C_char)
    g = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    u = (256.0+1)/leng
    return C_char[int(g/u)]
t = ''
for i in range(W):
    for j in range(H):
        r = img[i][j][0]
        g = img[i][j][1]
        b = img[i][j][2]
        t+=C(r,g,b)
        t+='  '
    t+='\n'
txt = open('w.txt','w')
txt.write(t)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孤独的S 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档