专栏首页毛利学Python自从我会了Python中的PIL,发现了其实超级简单

自从我会了Python中的PIL,发现了其实超级简单

PIL全称是Python Image Library,顾名思义,是用来做图像处理的。

我们可以用PIL干嘛呢?

第一,可以将两张图片合并在一起

Image.blend(image1,image2,alpha)

合成公式为:out=image1(1.0- alpha)+image2alpha

from PIL import Image
im1 = Image.open("1.jpg")
im2 = Image.open("2.jpg")
print(im1.mode,im1.size)  # RGB (500, 300)
print(im2.mode,im2.size)   # RGB (500, 300)
im = Image.blend(im1, im2, 0.5)
im.save('3.jpg')

这是1.jpg

这是2.jpg

这是3.jpg

合成后的图片

Composite

当然除了上面的方法还可以使用Composite类 Image.composite(image1,image2, mask) ⇒ image 复合类使用给定的两张图像及mask图像作为透明度,插值出一张新的图像。变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有相同的尺寸。

看一波源码,如下图所示

一波代码开干

from PIL import Image
im1 = Image.open("1.jpg")
im2 = Image.open("2.jpg")
r,g,b = im1.split()
print(b.mode)
print(im1.mode,im1.size)
print(im2.mode,im2.size)
im = Image.composite(im1,im2,mask=b)
im.save('4.jpg')

这是4.jpg

Filter类

im.filter(filter) ⇒ image

返回一个使用给定滤波器处理过的图像的拷贝。在该模块中,预先定义了很多增强滤波器,可以通过filter()函数使用,预定义滤波器包括:

  • BLUR
  • CONTOUR
  • DETAIL
  • EDGE_ENHANCE
  • EDGE_ENHANCE_MORE
  • EMBOSS
  • FIND_EDGES
  • SMOOTH

再看一波源码,如下图所示

一波代码开干

from PIL import Image
from PIL import ImageFilter                         ## 调取ImageFilter
img = Image.open("1.jpg")
blu = img.filter(ImageFilter.BLUR)                ##均值滤波
con = img.filter(ImageFilter.CONTOUR)             ##找轮廓
edge = img.filter(ImageFilter.FIND_EDGES)         ##边缘检测
blu.save('均值滤波.jpg')
con.save('找轮廓.jpg')
edge.save('边缘检测.jpg')

这是均值滤波.jpg

这是找轮廓.jpg

这是边缘检测.jpg

本文分享自微信公众号 - Python之王(gh_70a22bfa8e3a),作者:小sen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Graphviz

    graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。

    润森
  • 数据科学篇| statsmodels库的使用(六)

    statsmodels是一个Python模块,它提供对许多不同统计模型估计的类和函数,并且可以进行统计测试和统计数据的探索。

    润森
  • Centos7搭建Kubernetes集群

    Kubernetes 及其整个生态系统(工具、模块、插件等)均使用 Go 语言编写,从而构成一套面向 API、可高速运行的程序集合,这些程序文档精良、易于参与贡...

    润森
  • 2018区块链技术与场景落地峰会改期为

    接到相关部门通知,2018区块链技术与场景落地峰会原定于上海虹桥假日酒店的9月6日至7日的活动档期无法举行,大会改期至地点:北京国际会议中心举办于9月25日至...

    先进制造
  • PTA 根据后序和中序遍历输出先序遍历(25 分)

    7-1 根据后序和中序遍历输出先序遍历(25 分) 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。 输入格式: 第一行给出正整数...

    Kindear
  • Java1.8 -- Lambda表达式

    Lambda 表达式,也可称为闭包(注意与js中的闭包不是同一个概念),它允许把函数作为一个方法的参数(函数作为参数传递进方法中),使用 Lambda 表达式...

    Java深度编程
  • .NET Core 3.0之深入源码理解Kestrel的集成与应用(二)

    前一篇文章主要介绍了.NET Core继承Kestrel的目的、运行方式以及相关的使用,接下来将进一步从源码角度探讨.NET Core 3.0中关于Kestre...

    Edison.Ma
  • 关系型数据库查询语言 SQL 和图数据库查询语言 nGQL 对比

    摘要:这篇文章将介绍图数据库 Nebula Graph 的查询语言 nGQL 和 SQL 的区别。

    NebulaGraph
  • hdu1005

    @坤的
  • 畅通工程

    •Problem Description •某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何...

    attack

扫码关注云+社区

领取腾讯云代金券