Python使用Pillow库进行图像

学习目的:
CS2使用Python图像处理库Pillow处理图像文件

学习内容:
CS2.1安装Pillow
Pillow是Python中的图像处理库(PIL:Python Image Library),提供了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存,图像显示,格式转换以及基本的图像处理操作等。
1.Pycharm安装Pillow
Pycharm:首先右键单击File–>Settings
Python使用Pillow库进行图像_第1张图片

选择Project Interpreter,如果安装了Anaconda3可以直接导入它的库;如果是Pycharm,点击+号,Add,搜索要导入的库,然后install package,等待安装完成
Python使用Pillow库进行图像_第2张图片
Python使用Pillow库进行图像_第3张图片

Python使用Pillow库进行图像_第4张图片

2.Anaconda3 :安装的时候就己经有Pillow库了,直接调用

CS2.2 打开和显示图像
使用PIL.Image模块的open()函数可以打开一个图像,返回一个图像对象,然后调用图像对象的show()方法,可以在屏幕上显示图像。
1.新建一个Project,取名为Pillow,new---->python file ----->取名为test
Python使用Pillow库进行图像_第5张图片

2.终端输入D:\PycharmProjects\Pillow\test.py运行,调用系统默认的图像软件打开图片,并输出对应图片的信息。
Python使用Pillow库进行图像_第6张图片
CS2.3 图像的基本操作
1.新建一个python文件,取名为image_test
2.把一幅图像的4个副本排列成2×2网格:在左上方的副本是原始图像,而画面右上方、左下方、右下方则分别使用模块PIL.ImageFilter中定义的内置过滤器CONTOUR、EMBOSS、FIND_EDGES进行过滤。Python使用Pillow库进行图像_第7张图片
3.终端输入命令行 D:\PycharmProjects\Pillow\image_test.py C:\images\1.jpg
Python使用Pillow库进行图像_第8张图片

CS2.4 批量图像格式转换
1.新建一个python文件,取名为image_convert
2.将jpg图片批量转化为png图片

Python使用Pillow库进行图像_第9张图片3.终端命令行输入: D:\PycharmProjects\Pillow\image_convert.py c:\images jpg png

运行前:Python使用Pillow库进行图像_第10张图片

运行后:Python使用Pillow库进行图像_第11张图片

CS2.5 批量创建缩略图
1.新建一个python文件,取名为image_thumbnail
2.将jpg图片批量转为对对应的缩略图
Python使用Pillow库进行图像_第12张图片

3.终端输入:D:\PycharmProjects\Pillow\image_thumbnail.py c:\images jpg

Python使用Pillow库进行图像_第13张图片

CS2.6 批量图像加文字水印
1.新建一个python文件,取名为image_watermark1
2.给jpg图片添加文字水印Python使用Pillow库进行图像_第14张图片

3.终端输入:
D:\PycharmProjects\Pillow\image_watermark1.py c:\images jpg “Python”

Python使用Pillow库进行图像_第15张图片

CS2.7 批量图像加图片水印
1.创建一个新的python文件,取名为 image_watermark2
2.首先使用Python的Pillow图像库中的Image模块的new函数可以创建水印图像对象,并使用图像对象的paste方法把log图像粘贴到水印图像,最后通过Image模块的composite函数合成水印图像和原图像。
Python使用Pillow库进行图像_第16张图片

3.终端输入:D:\PycharmProjects\Pillow\image_watermark2.py c:\images jpg c:\images\logo.png
运行前:Python使用Pillow库进行图像_第17张图片

运行后:Python使用Pillow库进行图像_第18张图片
CS2.8 批量调整图像大小
1.创建一个新的python文件,取名为image_resize
2.使用Image对象的resize()方法可以调整图像大小。
运行效果:
3.终端输入:可以自定义设置图片的大小D:\PycharmProjects\Pillow\image_resize.py c:\images jpg 128 128
Python使用Pillow库进行图像_第19张图片
运行后:Python使用Pillow库进行图像_第20张图片

CS3 使用嵌套循环实现图像处理算法

学习内容:
CS3.1 图像的数据结构概述
实际上,在“底层”图像是由像素点组成的二维数组,每个像素点的位置表示为两个整数的元组,像素的值根据图像模式由对应的元组组成(例如,RGB模式表示为三个整数值组成的元组,分别表示构成颜色的红、蓝、绿的值,范围为0到255)。
图像处理的算法(例如,复制、旋转、裁剪和平滑图像等)根本上就是使用嵌套循环模式对这些像素进行处理。PIL.Image模块中的Image类的方法getpixel()和putpixel()可以用于读取和修改特定位置(loc)的像素的颜色值(pix)。其语法格式如下:
im.getpixel(loc) #返回位于位置loc的像素的颜色。
im.putpixel(loc, pix) #把位于位置loc的颜色替换为pix。
CS3.2 拷贝图像
通过打开原始图像,创建一个新的大小相同的空白图像,然后将旧图像中的像素颜色复制到新图像相应的像素中。即使用嵌套循环,把旧图像位置(i, j)的像素复制到新图像的位置(i, j)。
新建image_copy.py文件,输入代码,并运行:
Python使用Pillow库进行图像_第21张图片
运行结果:Python使用Pillow库进行图像_第22张图片

CS3.3 剪裁图像
通过打开原始图像,指定一个四元组的剪裁框,创建一个与剪裁框大小相同的空白图像,然后将旧图像中剪裁框内的像素颜色复制到新图像中。同样可以使用嵌套循环实现像素复制。
新建image_crop文件,输入代码,点击运行:

Python使用Pillow库进行图像_第23张图片

裁剪后Python使用Pillow库进行图像_第24张图片

CS3.4 水平或垂直翻转图像
通过打开原始图像,创建一个新的大小相同的空白图像,然后将旧图像中的像素颜色复制到新图像相应的像素中。水平翻转时,原始图像的像素(i,j)映射到目标图像的位置(width-i-1,j);垂直翻转时,原始图像的像素(i,j)映射到目标图像的位置(i,height-j-1)。

输入代码并运行Python使用Pillow库进行图像_第25张图片

测试代码:Python使用Pillow库进行图像_第26张图片

运行后:Python使用Pillow库进行图像_第27张图片
Python使用Pillow库进行图像_第28张图片

CS3.5 逆时针或顺时针旋转图像90度
逆时针或顺时针旋转图像90度的算法可以通过打开原始图像(width×height),创建一个新的height×width大小的空白图像,然后将旧图像中的像素颜色复制到新图像中相应的像素中。逆时针旋转图像90度时,原始图像的像素(i,j)映射到目标图像的位置(j,width-i-1);顺时针旋转图像90度,原始图像的像素(i,j)映射到目标图像的位置(height-j-1,i)。
输入代码运行:Python使用Pillow库进行图像_第29张图片

运行结果:Python使用Pillow库进行图像_第30张图片

Python使用Pillow库进行图像_第31张图片

CS3.6 平滑图像过滤器
简单的平滑过滤器算法可以通过打开原始图像,创建-一个新的大小相同的空白图像,然后将将新图像中的每个像素(i,j)的颜色设置为原始像素(i,j)及其相邻像素的颜色的平均值。不位于图像边界上像素(i,j)有8个相邻像素,其相邻像素位于从列i-1到列i+1和行j+1到行j+1范围。故可以通过下列代码计算新图像中像素(i,j)的颜色:原始图像中像素(i,j)和它的邻居像素的颜色的平均值。注意,如果像素位于边缘,在i-1可能小于0,故可以使用max(-1,0)作为下限:同样,可以使用min(i+1,width)作为上限。
输入代码并运行:Python使用Pillow库进行图像_第32张图片

运行结果:在这里插入图片描述Python使用Pillow库进行图像_第33张图片Python使用Pillow库进行图像_第34张图片

学习目的:

CS2使用Python图像处理库Pillow处理图像文件

学习内容:
CS2.1安装Pillow
Pillow是Python中的图像处理库(PIL:Python Image Library),提供了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存,图像显示,格式转换以及基本的图像处理操作等。
1.Pycharm安装Pillow
Pycharm:首先右键单击File–>Settings

选择Project Interpreter,如果安装了Anaconda3可以直接导入它的库;如果是Pycharm,点击+号,Add,搜索要导入的库,然后install package,等待安装完成

2.Anaconda3 :安装的时候就己经有Pillow库了,直接调用

CS2.2 打开和显示图像
使用PIL.Image模块的open()函数可以打开一个图像,返回一个图像对象,然后调用图像对象的show()方法,可以在屏幕上显示图像。
1.新建一个Project,取名为Pillow,new---->python file ----->取名为test

2.终端输入D:\PycharmProjects\Pillow\test.py运行,调用系统默认的图像软件打开图片,并输出对应图片的信息。

CS2.3 图像的基本操作
1.新建一个python文件,取名为image_test
2.把一幅图像的4个副本排列成2×2网格:在左上方的副本是原始图像,而画面右上方、左下方、右下方则分别使用模块PIL.ImageFilter中定义的内置过滤器CONTOUR、EMBOSS、FIND_EDGES进行过滤。
3.终端输入命令行 D:\PycharmProjects\Pillow\image_test.py C:\images\1.jpg

CS2.4 批量图像格式转换
1.新建一个python文件,取名为image_convert
2.将jpg图片批量转化为png图片
3.终端命令行输入: D:\PycharmProjects\Pillow\image_convert.py c:\images jpg png

运行前:

运行后:

CS2.5 批量创建缩略图
1.新建一个python文件,取名为image_thumbnail
2.将jpg图片批量转为对对应的缩略图

3.终端输入:D:\PycharmProjects\Pillow\image_thumbnail.py c:\images jpg

CS2.6 批量图像加文字水印
1.新建一个python文件,取名为image_watermark1
2.给jpg图片添加文字水印

3.终端输入:
D:\PycharmProjects\Pillow\image_watermark1.py c:\images jpg “Python”

CS2.7 批量图像加图片水印
1.创建一个新的python文件,取名为 image_watermark2
2.首先使用Python的Pillow图像库中的Image模块的new函数可以创建水印图像对象,并使用图像对象的paste方法把log图像粘贴到水印图像,最后通过Image模块的composite函数合成水印图像和原图像。

3.终端输入:D:\PycharmProjects\Pillow\image_watermark2.py c:\images jpg c:\images\logo.png
运行前:

运行后:
CS2.8 批量调整图像大小
1.创建一个新的python文件,取名为image_resize
2.使用Image对象的resize()方法可以调整图像大小。
运行效果:
3.终端输入:可以自定义设置图片的大小D:\PycharmProjects\Pillow\image_resize.py c:\images jpg 128 128

运行后:

CS3 使用嵌套循环实现图像处理算法

学习内容:
CS3.1 图像的数据结构概述
实际上,在“底层”图像是由像素点组成的二维数组,每个像素点的位置表示为两个整数的元组,像素的值根据图像模式由对应的元组组成(例如,RGB模式表示为三个整数值组成的元组,分别表示构成颜色的红、蓝、绿的值,范围为0到255)。
图像处理的算法(例如,复制、旋转、裁剪和平滑图像等)根本上就是使用嵌套循环模式对这些像素进行处理。PIL.Image模块中的Image类的方法getpixel()和putpixel()可以用于读取和修改特定位置(loc)的像素的颜色值(pix)。其语法格式如下:
im.getpixel(loc) #返回位于位置loc的像素的颜色。
im.putpixel(loc, pix) #把位于位置loc的颜色替换为pix。
CS3.2 拷贝图像
通过打开原始图像,创建一个新的大小相同的空白图像,然后将旧图像中的像素颜色复制到新图像相应的像素中。即使用嵌套循环,把旧图像位置(i, j)的像素复制到新图像的位置(i, j)。
新建image_copy.py文件,输入代码,并运行:

运行结果:

CS3.3 剪裁图像
通过打开原始图像,指定一个四元组的剪裁框,创建一个与剪裁框大小相同的空白图像,然后将旧图像中剪裁框内的像素颜色复制到新图像中。同样可以使用嵌套循环实现像素复制。
新建image_crop文件,输入代码,点击运行:

运行结果:

裁剪后:

CS3.4 水平或垂直翻转图像
通过打开原始图像,创建一个新的大小相同的空白图像,然后将旧图像中的像素颜色复制到新图像相应的像素中。水平翻转时,原始图像的像素(i,j)映射到目标图像的位置(width-i-1,j);垂直翻转时,原始图像的像素(i,j)映射到目标图像的位置(i,height-j-1)。

输入代码并运行

测试代码:

运行后:

CS3.5 逆时针或顺时针旋转图像90度
逆时针或顺时针旋转图像90度的算法可以通过打开原始图像(width×height),创建一个新的height×width大小的空白图像,然后将旧图像中的像素颜色复制到新图像中相应的像素中。逆时针旋转图像90度时,原始图像的像素(i,j)映射到目标图像的位置(j,width-i-1);顺时针旋转图像90度,原始图像的像素(i,j)映射到目标图像的位置(height-j-1,i)。
输入代码运行:

运行结果:

CS3.6 平滑图像过滤器
简单的平滑过滤器算法可以通过打开原始图像,创建-一个新的大小相同的空白图像,然后将将新图像中的每个像素(i,j)的颜色设置为原始像素(i,j)及其相邻像素的颜色的平均值。不位于图像边界上像素(i,j)有8个相邻像素,其相邻像素位于从列i-1到列i+1和行j+1到行j+1范围。故可以通过下列代码计算新图像中像素(i,j)的颜色:原始图像中像素(i,j)和它的邻居像素的颜色的平均值。注意,如果像素位于边缘,在i-1可能小于0,故可以使用max(-1,0)作为下限:同样,可以使用min(i+1,width)作为上限。
输入代码并运行:

运行结果:

你可能感兴趣的:(Python)