Python 与图像处理

Python 与图像处理


Python与图像处理

|

模块介绍

|

本例使用的模块为Pillow

getcolor函数获取颜色

Python 与图像处理

请点击此处输入图片描述

第一步是导入模块,然后调用getcolor方法,获取颜色,颜色为一个元组,其中四个元素为(红,绿,蓝,透明度),本例返回的元组是(255, 0, 0, 255),透明度每种颜色的取值范围为0到255,颜色字符串不区分大小写,’red’与’RED’都可以,其他可以作为颜色的字符串还有’whitesmoke’,’chocolate’等。

|

图像坐标

|

Python 与图像处理

原点位于图像的左上角的像素

Pillow选取一个图像区域需要一个四个整数表示的元组,四个整数分别是图像左上角的x,y坐标和图像右下角的坐标(不包含该点像素)

|

|

实例:基本操作流程

|

Python 与图像处理

处理图像基本流程

  1. 导入模块

  2. 使用open函数打开图像(生成一个Image对象)

  3. 对生成的Image对象进行操作(旋转,裁切等)

  4. 保存修改

支持任意图像格式

例子中打印了一些Image对象的属性如下:

(512, 512) logo.jpg JPEG JPEG (ISO 10918)

|

新建一个空白图像

Python 与图像处理

新建图像

Image.new函数返回一个空的Image对象,参数含义分别为:

  1. 颜色模式

  2. 图像大小(宽度与高度,单位是像素)

  3. 指定初始背景色

结果就是得到一张背景为红色的100×100的一张图片。

|

裁切图像

|

Image.crop()

返回一个新的Image图像,而不是直接裁切原始的图像。

Python 与图像处理

裁切图像

crop方法的参数是一个矩形区域元组,即左上角x,y坐标和右下角x,y坐标

Python 与图像处理

裁切前后的图像

|

图像复制

|

Image对象的copy函数可以复制Image对象

Python 与图像处理

图像复制

|

图像粘贴

|

Image对象的paste函数可以将一个Image对象粘贴到另一个Image对象上

Python 与图像处理

粘贴图像

paste两个参数分别为粘贴的Image对象和粘贴到的坐标,效果如图:

Python 与图像处理

粘贴前后图像

|

重定义图像大小:

|

Python 与图像处理

resize方法

Resize方法返回一个新的Image对象,参数是一个元组,且必须是一个整数。

显示效果如下图:

Python 与图像处理

重新调整图像大小

getbbox方法,Image对象的获取图像边框的方法,返回一个四元素元组,定义左, 上, 右,下像素坐标。

getpixel方法,Image对象获取图像上某个点的像素函数,参数为一个表示x,y坐标的元组,返回该点的RGB值。

Python 与图像处理


 

 

返回的值为(255, 0, 0, 255),最后一个值255是透明通道(255表示完全不透明)

 

 

Putpixel()方法包含两个元组参数,第一个参数表示x,y坐标,第二个参数作为该坐标像素的颜色,该方法可以改变图像上像素的颜色。

|

旋转图象

|

Image对象的rotate函数用于旋转图像,返回一个新的Image对象,参数为一整数或者浮点数,表示逆时针旋转的角度。

其有一个可选的expand参数,如果设置为True,则在旋转图像的时候,图像的尺寸会改变以适应旋转的图像。如图:

Python 与图像处理

请点击此处输入图片描述

Python 与图像处理

请点击此处输入图片描述


 

 

 

 

Image对象的transpose方法可以对图像进行镜像,其生成一个新的Image对象,参数为Image.FLIP_LEFT_RIGHT(左右镜像)和Image.FLIP_TOP_BOTTOM(上下镜像)。

|

Paste方法粘贴带透明通道的图象:

|

Python 与图像处理

请点击此处输入图片描述

|

实例项目

|

你有几百张的图片,需要在每张图片的左上角添加上logo水印

使用PS的批处理的功能也是可以的,但是我们要用Python来解决这个问题:

Python 与图像处理

请点击此处输入图片描述

os.makedirs将在当前目录中新建一个文件夹,参数exist_ok=True的意思是,如果当前目录中已经存在了logoPic这个文件夹,程序不会报错。

os.listdir(‘.’),返回一个当前目录中所有文件的字符串的一个列表。

效果如图:

Python 与图像处理

添加logo后的图片

|

在图象上画图

|

使用Pillow的ImageDraw模块

可以画线,矩形,圆形,文字等。

Python 与图像处理

请点击此处输入图片描述

Python 与图像处理

图形与文字