https://blog.csdn.net/jiaoyangwm/article/details/79293272

【python图像处理】python的图像处理模块Image

版本信息:2.7.11

环境:windows 7 64位系统

编辑器:PyCharm

运行工具:PyCharm

文件地址:D:\phpStudy\WWW\python\Image

一、引入图像模块

1. PIL简介:PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。利用 PIL 中的函数,我们可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中。PIL 中最重要的模块为 Image 。

2. 引入PIL:

 
  1. from PIL import Image

注意:有一些教程默认是用import Image的,但是在window 的64位系统中如果没有在cmd中执行pip install PIL是找不到Image模块的,所以呢必须先安装Pillow,在cmd中运行pip install Pillow,这里也要变成from PIL import Image

二、读取与存储操作

1. PIL 的 open() 函数用于创建 PIL 图像对象,比如读取一张图片:

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')

注意:在该路径下必须有qq_image.jpg图片,否则会出错

2. 存储图片:

save() 方法用于保存图像到具有指定文件名的文件。通过 save() 方法,PIL 可以将图像保存成多种格式的文件,PIL 是个足够智能的类库,可以根据文件扩展名来判定图像的格式。比如:img.save('qq_image_thumb.jpg', 'JPEG'),PIL 函数会进行简单的检查,如果文件不是 JPEG 格式,会自动将其转换成 JPEG 格式;如果转换失败,它会在控制台输出一条报告失败的消息。

为了效果,生成缩略图并且保存为qq_image_thumb.jpg:

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 生成缩略图
  6. img.thumbnail((128, 128))
  7. # 保存图片
  8. img.save('qq_image_thumb.jpg', 'JPEG')

运行后,进去文件目录:

三、图像的一些基本操作

1. 输出图片的信息(格式、尺寸以及图像类型)

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 输出图片的格式,尺寸以及图像类型
  6. print img.format, img.size, img.mode

输出:JPEG (355, 346) RGB

2. 显示图片

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 显示图片
  6. img.show()

在PyCharm下运行呢,会直接调用Windows照片查看器来显示图片

3. 生成缩略图

thumbnail() 方法接受一个元组参数(该参数指定生成缩略图的大小),然后将图像转换成符合元组参数指定大小的缩略图。

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 生成缩略图
  6. img.thumbnail((128, 128))
  7. # 显示图片
  8. img.show()

这样运行之后就会显示128*128的图片

4. 旋转图片

要旋转一幅图像,可以使用逆时针方式表示旋转角度,然后调用 rotate() 方法:

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 逆时针旋转45度
  6. rorate1 = img.rotate(45)
  7. rorate1.show()
  8. # 逆时针旋转90
  9. rorate2 = img.transpose(Image.ROTATE_90)
  10. rorate2.show()

运行后如图:

rorate1:

由于尺寸不变,旋转45度之后会填白

rorate2:

注意:只有选择90度,180度以及270度的时候才能用img.transpose(Image.ROTATE_90),其他角度用rotate

5. 翻转

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 左右对换
  6. rorate3 = img.transpose(Image.FLIP_LEFT_RIGHT)
  7. rorate3.show()
  8. # 上下翻转
  9. rorate4 = img.transpose(Image.FLIP_TOP_BOTTOM)
  10. rorate4.show()

运行后:

rorate3:

rorate4:

6. 缩放图片

要调整一幅图像的尺寸,我们可以调用 resize() 方法。该方法的参数是一个元组,用来指定新图像的大小:

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 缩放图片为50*50
  6. resize1 = img.resize((50, 50))
  7. resize1.show()

7. 图片灰度化

图像的颜色转换可以使用 convert() 方法来实现。要读取一幅图像,并将其转换成灰度图像,只需要加上 convert('L'),如下:

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 图片转换为灰度
  6. grey = img.convert('L')
  7. grey.show()

运行后:

8. 某个像素点的色彩值的获取以及更改

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 获取某个像素位置的值
  6. print img.getpixel((100, 100))
  7. # 更改某个像素位置的值
  8. img.putpixel((100, 100), (0, 0, 0))

9. 裁剪图片

使用 crop() 方法可以从一幅图像中裁剪指定区域:

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 裁剪图片 box为裁剪图片的区域范围
  6. box = (100, 100, 250, 250)
  7. region = img.crop(box)
  8. region.show()

运行输出:

注意:Python规定左上角为(0, 0)的坐标点,box由一个4元组(左,上,右,下)定义,表示为坐标为: (left, upper, right, lower),最后的两个数字必须比前面两个要大。如图:

10. 粘贴图片

为了效果,裁剪该图片的一部分然后旋转,最后粘贴到指定区域:

 
  1. # coding=utf-8
  2. from PIL import Image
  3. # 读取图片
  4. img = Image.open('qq_image.jpg')
  5. # 裁剪图片 box为裁剪图片的区域范围
  6. box = (100, 100, 250, 250)
  7. region = img.crop(box)
  8. region.show()
  9. # 逆时针旋转图片180度
  10. region2 = region.transpose(Image.ROTATE_180)
  11. region2.show()
  12. # 图片的粘贴
  13. img.paste(region2, box)
  14. img.show()

运行:

总结:

如果需要更强大的图像处理操作的话,可以使用Matplotlib类库,它具有比PIL更强大的绘图功能,比如说可以绘制出强大的条形图、饼状图、散点图等。

python图像处理---python的图像处理模块Image相关推荐

  1. python图片-Python中的十大图像处理工具

    原标题:Python中的十大图像处理工具 导读:本文主要介绍了一些简单易懂最常用的Python图像处理库. 作者:Parul Pandey 来源:大数据文摘(ID:BigDataDigest) 当今世 ...

  2. python进行基本的图像处理

    转自 http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Py ...

  3. python图像处理《数字图像处理与python实现》读书笔记

    文章目录 很重要! 第一章 基础知识 1.1 图像采样和量化 1.2 图像的表示和可视化 1.3 简单图像处理 参考 很重要! scikit-image的开发文档:https://scikit-ima ...

  4. python图像库_Python常用图像处理库整理

    1. 库简介 深度学习领域,对视频图片样本的处理占了很大一部分比重. 而Python环境下的图像处理库种类较多,无论是精度,速度等方面都有不同的差异,这里予以总结. Python环境下,相关的包有: ...

  5. 《OpenCv视觉之眼》Python图像处理七 :Opencv图像处理之高通滤波和低通滤波原理及构造

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  6. 强化学习系列文章(二十三):AirSim Python API图像与图像处理

    强化学习系列文章(二十三):AirSim Python API图像与图像处理 参考网址:https://microsoft.github.io/AirSim/image_apis/#segmentat ...

  7. Python中的类、模块和包究竟是什么?

    Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...

  8. Python中爬虫框架或模块的区别

    Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...

  9. Python炫技操作:模块重载的五种方法

    作者 | 写代码的明哥 来源 | Python编程时光 环境准备 新建一个 foo 文件夹,其下包含一个 bar.py 文件 $ tree foofoo└── bar.py 0 directories ...

  10. python 多线程编程之_thread模块

    python 多线程编程之_thread模块 参考书籍:python核心编程 _thread模块除了可以派生线程外,还提供了基本的同步数据结构,又称为锁对象(lock object,也叫原语锁.简单锁 ...

最新文章

  1. 牛逼了!一周内咸鱼疯转 3.6w 次,最终被所有大厂封杀!
  2. 安装了silverlight还是提示_win10系统安装.netframework3.5方法
  3. Customing 维护中TR弹出逻辑
  4. kubernetes+Azure DevOps实现.Net Core项目的自动化部署均衡负载
  5. 题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?...
  6. 25岁,一位女程序员的幸运几年
  7. 【python教程入门学习】检验Python安装成功的方法
  8. 目标检测(十)--SSD
  9. 软考网络工程师备考经验
  10. WPS打卡领会员活动题目及答案
  11. 《系统分析与设计》个人第二次作业
  12. 语法歧义现象(一):牛津逗号(Oxford Comma)
  13. HTML_canvas
  14. 2020电赛芯片介绍和题目估计(二):LMT70
  15. uni-app系列(二):uniapp 项目引入 uView 并简单使用
  16. 【以太网硬件十八】网卡是什么?
  17. 计算机模拟虚拟筛选操作流程
  18. xyCMS后台getshell
  19. A.c 和B.c两个c文件中使用了两个相同名字的static变量
  20. JAVA毕设项目网上拍卖系统(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. 一文读懂 IEEE754 浮点数的表示方法
  2. 一家之言—通信专业IT男的弊端
  3. 各种计算机语言的经典书籍
  4. 西南大学计算机专硕907,西南大学907电子信息
  5. 安装secureCRT和secureFX
  6. 区块链投资基金致力于银行的一亿美…
  7. js快捷获取超链接参数和修改超链接(新增URLSearchParams方法获取参数)
  8. python shell怎么调字体大小_Linux_Shell 设置字体 前景色 与 背景色 的几种方法
  9. SQLServer bigint 转 int带符号转换函数(原创)
  10. 数字识别digits.png研究