PIL中ImageFilter模块几种图片滤波处理和使用方法

举报
虫无涯 发表于 2023/11/20 18:30:14 2023/11/20
【摘要】 1 关于PIL库 1.1 PIL简单介绍PIL是Python的一个图像处理库,支持多种文件格式;PIL提供强大的图像处理和图形处理能力;可完成对图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。安装的话,使用以下命令:pip install Pillow 1.2 常见PIL子库或类目录在:Python37\Lib\site-packages\PIL以下是PIL的常见子库或者常见的类...

1 关于PIL库

1.1 PIL简单介绍

  • PIL是Python的一个图像处理库,支持多种文件格式;
  • PIL提供强大的图像处理和图形处理能力;
  • 可完成对图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。
  • 安装的话,使用以下命令:
pip install Pillow

在这里插入图片描述

1.2 常见PIL子库或类

  • 目录在:
Python37\Lib\site-packages\PIL
  • 以下是PIL的常见子库或者常见的类及说明:
类或子库 说明
Image 最重要的模块,如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等
ImageChops 算术图形操作,如图像特效,图像组合,算法绘图等
ImageCrackCode 允许用户检测和测量图像的各种特性
ImageDraw 基本的图形处理功能,如可创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形
ImageEnhance 图像增强
ImageFile 为图像打开和保存功能提供了相关支持功能
ImageFileIO 从一个socket或者其他流设备中读取一张图像
ImageFilter 各种滤波器的预定义集合
ImageFont 字体库
ImageGrab 将屏幕上的内容拷贝到一个PIL图像内存中
ImageOps 可完成直方图均衡、裁剪、量化、镜像等操作
ImagePath 存储和操作二维向量数据
ImageSequence 为图像序列中每一帧提供了迭代器
ImageStat 计算一张图像或者一张图像的一个区域的全局统计值
ImageTk 创建和修改BitmapImagePhotoImage对象中的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()
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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