码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。
Python与图像处理
模块介绍
本例使用的模块为Pillow
getcolor函数获取颜色
请点击此处输入图片描述
第一步是导入模块,然后调用getcolor方法,获取颜色,颜色为一个元组,其中四个元素为(红,绿,蓝,透明度),本例返回的元组是(255, 0, 0, 255),透明度每种颜色的取值范围为0到255,颜色字符串不区分大小写,’red’与’RED’都可以,其他可以作为颜色的字符串还有’whitesmoke’,’chocolate’等。
图像坐标
原点位于图像的左上角的像素
Pillow选取一个图像区域需要一个四个整数表示的元组,四个整数分别是图像左上角的x,y坐标和图像右下角的坐标(不包含该点像素)
实例:基本操作流程
处理图像基本流程
-
导入模块
-
使用open函数打开图像(生成一个Image对象)
-
对生成的Image对象进行操作(旋转,裁切等)
-
保存修改
支持任意图像格式
例子中打印了一些Image对象的属性如下:
(512, 512) logo.jpg JPEG JPEG (ISO 10918)
新建一个空白图像
新建图像
Image.new函数返回一个空的Image对象,参数含义分别为:
-
颜色模式
-
图像大小(宽度与高度,单位是像素)
-
指定初始背景色
结果就是得到一张背景为红色的100×100的一张图片。
裁切图像
Image.crop()
返回一个新的Image图像,而不是直接裁切原始的图像。
裁切图像
crop方法的参数是一个矩形区域元组,即左上角x,y坐标和右下角x,y坐标
裁切前后的图像
图像复制
Image对象的copy函数可以复制Image对象
图像复制
图像粘贴
Image对象的paste函数可以将一个Image对象粘贴到另一个Image对象上
粘贴图像
paste两个参数分别为粘贴的Image对象和粘贴到的坐标,效果如图:
粘贴前后图像
重定义图像大小:
resize方法
Resize方法返回一个新的Image对象,参数是一个元组,且必须是一个整数。
显示效果如下图:
重新调整图像大小
getbbox方法,Image对象的获取图像边框的方法,返回一个四元素元组,定义左, 上, 右,下像素坐标。
getpixel方法,Image对象获取图像上某个点的像素函数,参数为一个表示x,y坐标的元组,返回该点的RGB值。
返回的值为(255, 0, 0, 255),最后一个值255是透明通道(255表示完全不透明)
Putpixel()方法包含两个元组参数,第一个参数表示x,y坐标,第二个参数作为该坐标像素的颜色,该方法可以改变图像上像素的颜色。
旋转图象
Image对象的rotate函数用于旋转图像,返回一个新的Image对象,参数为一整数或者浮点数,表示逆时针旋转的角度。
其有一个可选的expand参数,如果设置为True,则在旋转图像的时候,图像的尺寸会改变以适应旋转的图像。如图:
请点击此处输入图片描述
请点击此处输入图片描述
Image对象的transpose方法可以对图像进行镜像,其生成一个新的Image对象,参数为Image.FLIP_LEFT_RIGHT(左右镜像)和Image.FLIP_TOP_BOTTOM(上下镜像)。
Paste方法粘贴带透明通道的图象:
请点击此处输入图片描述
实例项目
你有几百张的图片,需要在每张图片的左上角添加上logo水印
使用PS的批处理的功能也是可以的,但是我们要用Python来解决这个问题:
请点击此处输入图片描述
os.makedirs将在当前目录中新建一个文件夹,参数exist_ok=True的意思是,如果当前目录中已经存在了logoPic这个文件夹,程序不会报错。
os.listdir(‘.’),返回一个当前目录中所有文件的字符串的一个列表。
效果如图:
添加logo后的图片
在图象上画图
使用Pillow的ImageDraw模块
可以画线,矩形,圆形,文字等。
请点击此处输入图片描述
图形与文字