python修图和ps_会照片处理的不只是ps,还有Python!
女朋友老是吵着要修图,作为程序员,只会敲代码,不会ps啊,真是令人头大。
程序员是这么容易被难到的吗?肯定不会!最近发现了程序员的p图神器——python。
python也可以修图吗?是滴!下面就带你进入python的修图世界。(以下面这张照片为例。)
图片来源于pixabay
库名称:Pillow
Pillow是Python中最流行的图像预处理函数库,支持一系列简单或复杂的图像处理功能,也是其他Python库(如SciPy和Matplotlib)能够处理图像的基础。
01
安装与导入
直接在cmd中使用pip方法安装pillow库:
pipinstallPillow
需要注意的是,其在Python2中的库名为PIL,而非Pillow。
导入:
fromPILimportImage
02
基本操作
01 打开图片使用Image模块中的open函数打开一张图片:
im= Image.open('1.jpg')
02 查看格式
format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None:
im.format
输出:'JPEG'
03 查看大小
size属性是一个tuple,表示图像的宽和高(单位为像素):
im.size
输出:(960, 640)
04 查看模式
mode属性为表示图像的模式,模式属性如下:
im.mode
输出:'RGB'
05 查看文件名
im.filename
输出:'1.jpg'
06 查看位数
im.bits
输出:8
07 显示图片
标准版本的show()方法不是很有效率,因为它先将图像保存为一个临时文件,然后使用查看器进行显示。
im.show()
08 保存图片
im.save('2.jpg')
03
图片处理
01 图片裁剪
使用open方法读取图片,然后查看它的size,size的输出是(960, 640),也就是图片的宽度和高度。
之后我们调用crop方法来对图片进行裁剪,crop需要给定一个box参数,box是一个四元组,元组中元素的顺序是需要裁剪得到的图片在原图中的左、上、右、下坐标,即(left, upper, right, lower)。
然后,我们使用save方法保存裁剪得到的图片。
from PIL import Image
img = Image.open("1.jpg")
print(img.size)
cropped = img.crop((200,,600,400)) # (left, upper,right, lower)
cropped.save("A.jpg")
裁剪后的图片:
02 复制粘贴
Image的copy函数如其名会产生一个原图像的副本,在这个副本上的任何操作不会影响到原图像。
paste()方法用于将一个图像粘贴(覆盖)在另一个图像上面。谁调用它,他就在该Image对象上直接作修改。
cropedIm =im.crop((400,,800,800))
im.paste(cropedIm, (,))
im.show()
im.save("B.jpg")
以裁剪后的图像宽度和高度为间隔,在循环内不断粘贴在副本中,会发生什么呢?
cropedIm =im.crop((300,50,500,350))
crop_width, crop_height = cropedIm.size
width, height =im.size
copyIm =im.copy()
forleftinrange(, width, crop_width):
fortop inrange(, height, crop_height):
copyIm.paste(cropedIm, (left, top))
copyIm.save("C.jpg")
有一点像证件照的效果:
03 图片缩放
resize方法返回指定宽高度的新Image对象,接受一个含有宽高的元组作为参数。宽高的值得是整数。
width, height =im.size
resizedIm =im.resize((width, height+(960-640)))
resizedIm.save("D.jpg")
人也变瘦了,可以看到resize不是等比例缩放的,不过女生应该蛮喜欢变瘦的吧。
04 图片旋转
图像可以用rotate()方法旋转,该方法返回旋转后的新Image对象,并保持原始Image对象不变。rotate()的参数是一个整数或浮点数。
im= Image.open("1.jpg")
im.rotate(90).save("E.jpg")
im.rotate(270).save("F.jpg")
im.rotate(180).save("G.jpg")
im.rotate(20).save("H.jpg")
由上到下,分别是旋转了90°,180°, 270°、普通的20°。
当图像旋转90或270度时,宽度和高度会变化。在windows上, 会使用黑色的背景来填补旋转造成的缝隙。
05 画面增强
PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像的亮度、对比度、色度,还可以用于增强图像的锐度。
5.1 亮度增强Brightness:
enh_bri = ImageEnhance.Brightness(im)
brightness =1.5
image_brightened = enh_bri.enhance(brightness)
image_brightened.show()
5.2 对比度增强Contrast:
enh_con = ImageEnhance.Contrast(im)
contrast =1.5
image_contrasted = enh_con.enhance(contrast)
image_contrasted.show()
5.3 色度增强Color:
enh_col = ImageEnhance.Color(im)
color =1.5
image_colored = enh_col.enhance(color)
image_colored.show()
5.4 锐度增强Sharpness:
enh_sha = ImageEnhance.Sharpness(im)
sharpness =6.0
image_sharped = enh_sha.enhance(sharpness)
image_sharped.show()
调节亮度、对比度、色彩、锐度等,不就等于给照片加了滤镜吗?而且效果还不错!
06 图像过滤
在图像处理中,经常需要对图像进行平滑、锐化、边界增强等滤波处理。
在使用PIL图像处理库时,我们通过Image类中的成员函数filter()来调用滤波函数对图像进行滤波,而滤波函数则通过ImageFilter类来定义的。
6.1 高斯模糊
im.filter(ImageFilter.GaussianBlur).save("J.jpg")
6.2 浮雕
im.filter(ImageFilter.EMBOSS).save("L.jpg")
6.3 轮廓
im.filter(ImageFilter.CONTOUR).save("M.jpg")
除此之外,pillow中还提供以下滤波可供使用:
# 锐化
im.filter(ImageFilter.SHARPEN).save('.jpg')
# 平滑
im.filter(ImageFilter.SMOOTH).save('.jpg')
# 细节
im.filter(ImageFilter.DETAIL).save('.jpg')
# 普通模糊
im.filter(ImageFilter.BLUR).save('.jpg')
# 边缘增强
im.filter(ImageFilter.EDGE_ENHANCE).save('.jpg')
# 找到边缘
im.filter(ImageFilter.FIND_EDGES).save('.jpg')
关于python中pillow库的照片处理到这儿就差不多了,虽然使用python进行照片处理跟ps还是有一定的差别,但基本操作没有问题,四舍五入我们还是会修图的!
- DataCastle -
python修图和ps_会照片处理的不只是ps,还有Python!相关推荐
- python可以修图吗_会照片处理的不只是ps,还有Python!
女朋友老是吵着要修图,作为程序员,只会敲代码,不会ps啊,真是令人头大. 程序员是这么容易被难到的吗?肯定不会!最近发现了程序员的p图神器--python. python也可以修图吗?是滴!下面就带你 ...
- cad和python哪个好学_对纯外行人来说,学习PS和Python哪个更容易?
果真是高手大隐隐于市,我如此隐藏都被你看出来了,谢邀回答!然后你看出了吧!答案在我这里很明显,当然是学习ps更容易一点,至于Python我的天分实在是太渣,所以,至今我敢不敢承认我学过.既然都被召唤出 ...
- python处理图片去白底-Python实现将蓝底照片转化为白底照片功能完整实例
本文实例讲述了Python实现将蓝底照片转化为白底照片功能.分享给大家供大家参考,具体如下: import cv2 import numpy as np img=cv2.imread('yay.jpg ...
- 照片背景底色更换工具二(python+flask网页版源码及打包)
照片背景底色更换工具二(python+flask网页版源码及打包) 所有源码 文件结构 static images huaman_src_test.jpg huaman_result_test.png ...
- 照片背景底色更换工具二(python+flask网页版使用演示)
照片背景底色更换工具二(python+flask网页版) 引言 软件介绍及使用 软件包介绍 部署运行 1,双击启动 2,找到本地计算机的ip地址 3,访问链接 4,在windows server 20 ...
- 100天精通Python丨黑科技篇 —— 20、Python 修图(滤镜、灰度、裁剪、视觉处理、图像分割、特征提取)
文章目录 一.PIL 常规修图操作 1. 读取图片 2. 图片缩放 3. 图片旋转 4. 图片裁剪 5. 图片滤镜 二.OpenCV 图像处理.视频处理.对象识别 三.scikit-image 视觉算 ...
- python编程从入门到精通 叶维忠 pdf-最好的Python入门教材是哪本?
真的是零经验的选手来答一发: 第一个坑:因为在互联网公司,自然第一时间问公司的开发,都说学习Python很有前途,问怎么学?推荐廖雪峰老师的博客,说看看就懂了.看这个链接:Python教程 然后我是连 ...
- python 数组合并排重_并排深度学习:Julia vs Python
python 数组合并排重 Julia could possibly be the biggest threat to Python. For a variety of applications, J ...
- Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁
继上一篇"Python人脸识别黑科技(一):50行代码运用Python+OpenCV实现人脸追踪+详细教程+快速入门+图像识",那么今天我们来讲关于使用python+opencv+ ...
最新文章
- C语言不用strcmp函数比较字符串大小
- 灯的开关 Bulb Switcher II
- 51单片机学习笔记(清翔版)(21)——ADDA数模转换
- Java自带的多线程监控分析工具(VisualVM)
- DEPHI中tform类的构造函数与FORMCREATE的关系
- vue获取商品数据接口_基于 request cache 请求缓存技术优化批量商品数据查询接口...
- 西澳大学商科专业排名_澳洲西澳大学优势专业排名多少
- 闪屏页面(Splash)开发
- 第94课 函数的参数 《小学生C++编程入门》 例94.1
- c++如何使用json配置文件
- DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
- Understanding the Bias-Variance Tradeoff
- git push 报错提示 ! [rejected] dev -> dev (non-fast-forward)
- linux进程显示exit是怎么回事,linux 进程退出exit,_exit区别即atexit函数
- Running Hero.
- html网页设计作品文字,40个以大文字排版的网页设计作品
- 深入理解计算机系统 csapp 家庭作业(第二章完整版)
- 初遇项目网络平台架构设计方案
- openssl建立证书和私钥方法
- AI-大型软件研发效能倍增的银弹