1 关于PIL库
1.1 PIL简略介绍
-
PIL
是Python的一个图画处理库,支撑多种文件格局; -
PIL
供给强壮的图画处理和图形处理能力; - 可完成对图画的缩放、裁剪、叠加以及图画增加线条、图画和文字等操作。
- 安装的话,运用以下指令:
pip install Pillow
1.2 常见PIL子库或类
- 目录在:
Python37Libsite-packagesPIL
- 以下是
PIL
的常见子库或许常见的类及阐明:
类或子库 | 阐明 |
---|---|
Image |
最重要的模块,如创立、打开、显现、保存图画等功用,合成、裁剪、滤波等功用,获取图画特点功用,如图画直方图、通道数等 |
ImageChops |
算术图形操作,如图画特效,图画组合,算法绘图等 |
ImageCrackCode |
允许用户检测和测量图画的各种特性 |
ImageDraw |
根本的图形处理功用,如可创立新图画,注释或润饰已存在图画,为web使用实时产生各种图形 |
ImageEnhance |
图画增强 |
ImageFile |
为图画打开和保存功用供给了相关支撑功用 |
ImageFileIO |
从一个socket 或许其他流设备中读取一张图画 |
ImageFilter |
各种滤波器的预界说集合 |
ImageFont |
字体库 |
ImageGrab |
将屏幕上的内容拷贝到一个PIL 图画内存中 |
ImageOps |
可完成直方图均衡、裁剪、量化、镜像等操作 |
ImagePath |
存储和操作二维向量数据 |
ImageSequence |
为图画序列中每一帧供给了迭代器 |
ImageStat |
计算一张图画或许一张图画的一个区域的全局统计值 |
ImageTk |
创立和修正BitmapImage 和PhotoImage 目标中的Tkinter
|
PSDraw |
为Postscript 打印机供给根本的打印支撑 |
2 ImageFilter模块滤波处理
2.1 图片概括
- 阐明:将图画中的概括信息悉数提取出来;
- 办法:
ImageFilter.CONTOUR
; - 示例:
from PIL import Image, ImageFilter
class TestImage():
def __init__(self):
super(TestImage, self).__init__()
self.img = Image.open("./image06.jpg")
# self.img.show()
# 图片概括
def test_contur(self):
self.contur = self.img.filter(ImageFilter.CONTOUR)
# self.contur.show()
self.contur.save("image06_contur.jpg")
if __name__ == "__main__":
image = TestImage()
image.test_contur()
- 显现作用:
2.2 浮雕作用
- 阐明:使图画呈现出浮雕作用;
- 办法:
ImageFilter.EMBOSS
; - 示例:
# 浮雕作用
def test_emboss(self):
self.emboss = self.img.filter(ImageFilter.EMBOSS)
# self.emboss.show()
self.emboss.save("image07_emboss.jpg")
- 显现作用:
2.3 边际增强
- 阐明:会使得图画中边际部分愈加明显;
- 办法:
ImageFilter.EDGE_ENHANCE_MORE
; - 示例:
def test_enhance_m(self):
self.enhance = self.img.filter(ImageFilter.EDGE_ENHANCE_MORE)
# self.enhance.show()
self.enhance.save("image08_enhance.jpg")
- 显现作用:
2.4 图片含糊
- 阐明:使得处理后的图片变得含糊;
- 办法:
ImageFilter.BLUR
; - 示例:
def test_blur(self):
self.blur = self.img.filter(ImageFilter.BLUR)
# self.blur.show()
self.blur.save("image09_blur.jpg")
- 显现作用:
2.5 细节增强
- 阐明:使图画中细节愈加明显;
- 办法:
ImageFilter.DETAIL
; - 示例:
def test_detail(self):
self.detail = self.img.filter(ImageFilter.DETAIL)
self.detail.save("image10_detail.jpg")
- 显现作用:
2.6 不同灰度边际增强
- 阐明:加强和改进图画中不同灰度区域之间的边界和概括;
- 办法:
ImageFilter.EDGE_ENHANCE
; - 示例:
def test_enhance(self):
self.enhance01 = self.img.filter(ImageFilter.EDGE_ENHANCE)
self.enhance01.save("image11_enhance01.jpg")
- 显现作用:
2.7 寻觅边际信息
- 阐明:找出图画中的边际信息;
- 办法:
ImageFilter.FIND_EDGES
; - 示例:
def test_find_edges(self):
self.find_edges = self.img.filter(ImageFilter.FIND_EDGES)
self.find_edges.save("image12_find_edges.jpg")
- 显现作用:
2.8 滑润处理
- 阐明:使图画亮度平缓骤变,减小骤变梯度;
- 办法:
ImageFilter.SMOOTH
; - 示例:
def test_smooth(self):
self.smooth = self.img.filter(ImageFilter.SMOOTH)
self.smooth.save("image13_smooth.jpg")
- 显现作用:
2.9 深度滑润处理
- 阐明:使图画愈加滑润;
- 办法:
ImageFilter.SMOOTH_MORE
; - 示例:
def test_smooth_m(self):
self.smooth_m = self.img.filter(ImageFilter.SMOOTH_MORE)
self.smooth_m.save("image14_smooth_m.jpg")
- 显现作用:
2.10 锐化处理
- 阐明:补偿图画的概括;
- 办法:
ImageFilter.SHARPEN
; - 示例:
def test_sharpen(self):
self.sharpen = self.img.filter(ImageFilter.SHARPEN)
self.sharpen.save("image15_sharpen.jpg")
- 显现作用:
3 完好源码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/20
# 文件名称:test_pil.py
# 作用:图片作用处理
# 联络:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
from PIL import Image, ImageFilter
class TestImage():
def __init__(self):
super(TestImage, self).__init__()
self.img = Image.open("./image06.jpg")
# self.img.show()
# 图片概括
def test_contur(self):
self.contur = self.img.filter(ImageFilter.CONTOUR)
# self.contur.show()
self.contur.save("image06_contur.jpg")
# 浮雕作用
def test_emboss(self):
self.emboss = self.img.filter(ImageFilter.EMBOSS)
# self.emboss.show()
self.emboss.save("image07_emboss.jpg")
# 边界增强
def test_enhance_m(self):
self.enhance = self.img.filter(ImageFilter.EDGE_ENHANCE_MORE)
# self.enhance.show()
self.enhance.save("image08_enhance.jpg")
# 图片含糊
def test_blur(self):
self.blur = self.img.filter(ImageFilter.BLUR)
# self.blur.show()
self.blur.save("image09_blur.jpg")
# 细节增强
def test_detail(self):
self.detail = self.img.filter(ImageFilter.DETAIL)
self.detail.save("image10_detail.jpg")
# 不同灰度边际增强
def test_enhance(self):
self.enhance01 = self.img.filter(ImageFilter.EDGE_ENHANCE)
self.enhance01.save("image11_enhance01.jpg")
# 找出图画中的边际信息
def test_find_edges(self):
self.find_edges = self.img.filter(ImageFilter.FIND_EDGES)
self.find_edges.save("image12_find_edges.jpg")
# 滑润处理
def test_smooth(self):
self.smooth = self.img.filter(ImageFilter.SMOOTH)
self.smooth.save("image13_smooth.jpg")
# 深度滑润处理
def test_smooth_m(self):
self.smooth_m = self.img.filter(ImageFilter.SMOOTH_MORE)
self.smooth_m.save("image14_smooth_m.jpg")
# 锐化处理
def test_sharpen(self):
self.sharpen = self.img.filter(ImageFilter.SHARPEN)
self.sharpen.save("image15_sharpen.jpg")
if __name__ == "__main__":
image = TestImage()
# image.test_contur()
# image.test_emboss()
# image.test_enhance_m()
# image.test_blur()
# image.test_detail()
# image.test_find_edges()
# image.test_smooth()
# image.test_smooth_m()
image.test_sharpen()