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

网友投稿 1200 2022-05-30

随便讲讲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?

PIL只支持Python2.

PIL 不兼容setuptools.

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

PIL多个模块介绍

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。

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

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

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

可以使用Image.size和Image.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")

还有很多同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")

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

Python 图像处理

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:快速搭建一个简单得SpringBoot项目【奔跑吧!JAVA】
下一篇:[LiteOS移植]目标芯片STM32F1 修改Makefile
相关文章