随便讲讲Python图像处理库PIL的使用

举报
Regan Yue 发表于 2021/10/24 12:37:03 2021/10/24
【摘要】 随便讲讲Python图像处理库PIL的使用如何下载安装PIL我们可以使用pip来安装,但是需要注意的是如果输入pip install PIL的话会报错:ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)​ERROR: No matching distribution ...

随便讲讲Python图像处理库PIL的使用

如何下载安装PIL

我们可以使用pip来安装,但是需要注意的是如果输入pip install PIL的话会报错:

ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)
​
ERROR: No matching distribution found for PIL

这是因为PIL是只支持Python2.x的,所以我们使用Python3的小伙伴只能使用pillow,pillow可以说是Python3的PIL,功能、用法都差不太多。

为什么会出现Piilow?

  1. PIL只支持Python2.

  2. PIL 不兼容setuptools.

  3. PIL更新速度令人难以忍受,一年只有两次更新。

PIL多个模块介绍

1. Image

Image是PIL中最重要的模块之一,任何一张图片都可以使用Image对象来表示。

from PIL import Image
im = Image.open("pic.jpg")

这里要注意在使用交互式处理图片文件时,应该使用文件的全路径,如果运行py文件,还是建议采用相对路径。

我们可以使用Image类的一些属性来查看图片文件的一些信息:

im = Image.open("eyecatch.jpg")
print(im.format,im.size,im.mode)

输出结果:

JPEG (1200, 630) RGB

这个Image.format是用来标识图片的格式或来源,如果图片并不是通过读取文件得到的,那么值就是None。这个Image.mode就是图片的色彩模式,有三种色彩模式,一种是“L”:灰度图片,一种是“RGB”:真彩图片,最后一种是“CMYK”,是出版图片。至于Image.size它是显示图片的高和宽的,其代表高多少像素,宽多少像素,打印该属性得到的是一个二元元组。

我们还可以利用Image的一些方法来进行图像转换和保存。

from PIL import Image
im = Image.open("eyecatch.jpg")
im.thumbnail((128,128))
im.save("EYECATCH.jpg")

这里是创建图片的略缩图。尺寸为128*128。

然后调用save方法保存图片。

也可以使用convert(mode)来转换图片到新的模式。

可以使用Image.sizeImage.rotate来调整图像的大小和进行旋转图片。


2. ImageFilter

我们可以使用ImageFilter来过滤图像,比如活动一张图片的轮廓效果,我们可以这样:

# -*- coding: utf-8 -*-
from PIL import Image
from PIL import ImageFilter
im = Image.open("google-chrome-eyecatch.jpg")
om = im.filter(ImageFilter.CONTOUR())
om.save("bd.jpg")


image-20211018093729303

还有很多同ImageFilter.CONTOUR()的模式,大家可以试一试。

ImageFilter.BLUR 让图片产生模糊效果。

ImageFilter.DETAIL 让图片有细节效果。

ImageFilter.EDGE_ENHANCE 让图片的边界有加强效果。

ImageFilter.SHARPEN 产生图片锐化效果

还有很多在此不赘叙了,可以查看它的文档。


3. ImageEnhance

ImageEnhance模块拥有了更加高级的图像增强功能.

比如我们可以增强图片的对比度:

# -*- coding: utf-8 -*-
from PIL import Image
from PIL import ImageEnhance
im = Image.open("google-chrome-eyecatch.jpg")
om = ImageEnhance.Contrast(im)
om.enhance(20).save("bd.jpg")

image-20211018094924195

我们还可以通过imageEnhance.Color()调整其颜色平衡,通过imageEnhance.Brightness()调整其亮度。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。