IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> PIL库快速上手 -> 正文阅读

[人工智能]PIL库快速上手

PIL库基本操作快速入门

PIL(pillow)——python的图像处理库

1.如何读入一张图片?

PIL(python Imaging Library,python图像处理库)提供了图像处理功能,包括图像的缩放、采集、选择、读入、写入等,其中最重要的模块为Image。

接下来我们了解一下,PIL是如何通过Image模块读入图片的:

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('../img/leshan.jpg')
print(type(img))
<class 'PIL.JpegImagePlugin.JpegImageFile'>

可以看到通过Image的open函数可以将图片读入成一个PIL的对象,类似于numpy中的array。

那进一步,我们都知道灰度图片是比较简单好处理的,如果需要转换成灰度图,可以使用这个对象的convert方法。

img=img.convert('L')
# 一般来说我们常用的mode有RGB、L这两种

这里顺带提一下3通道的RGB图是如何通过convert转换成一通道的灰度图的,同官方函数文档的公式:

When translating a color image to greyscale (mode “L”),
the library uses the ITU-R 601-2 luma transform::

        L = R * 299/1000 + G * 587/1000 + B * 114/1000

意思就是说当将彩色图转换成灰度图的时候会使用这个ITU-R 601-2转换:将三个通道像素值矩阵分别进行对应的数值伸缩变化然后叠加在一起。

2.如何保存一张图片?

值得一提的是Image的save函数不仅仅可以用于保存PIL对象为一定格式图片,并且会自动识别存储名来使用对应的图片存储格式。

如果对应的PIL对象保存时不满足对应格式,则会提示相应错误。

# 将我们的灰度图保存起来
img.save('../img/leshan_grey.jpg')
img.close()

额。。。咱们乐山大佛周围景色的这张图片貌似本身就比较灰。。。换一张图片吧!

img2=Image.open('../img/crisis2.jpg').convert('L')
img2.save("../img/crisis2_grey.jpg")
plt.imshow(img2)
img2.close()

在这里插入图片描述

当然你不想用Image自带的show功能也可以使用pyplot的imshow(兼容PIL对象)

3.生成缩略图

所谓的缩略图,其实就是将图片进行了内容上的缩小、压缩便于存储,内容与原图没有区别。

img3=Image.open('../img/crisis2.jpg')
img3.thumbnail((128,128))   # 输入指定像素值
# 图像进行了压缩
plt.imshow(img3)
img3.close()

在这里插入图片描述

4.复制和粘贴图像区域

这个功能就有一点PS的感觉了,那么既然要复制一个区域,那么我就得先确定一个边界框(bounding box)——有点像目标检测哈。

我们就用这个box去框出纳米装甲的面甲。

img3=Image.open('../img/crisis2.jpg')
plt.imshow(img3)
# 大概是x[1000(左):1600(右)],y[300(上):900(下)]
box=(1000,300,1600,900)
# Tips:box规矩是以图片左上角为(0,0),box=(左,上,右,下)的操作
area=img3.crop(box)
plt.subplot(1,2,1)
plt.imshow(area)
plt.subplot(1,2,2)
plt.imshow(img3)
<matplotlib.image.AxesImage at 0x272ddd4efd0>

在这里插入图片描述

可以看到复制并不是剪切哦,没有让咱们的孤岛危机2主角“分头行动”哦。但是我们可以让它的头来一个180度选择,也就是图像的翻转,需要用到rotate这个关键词。

area=area.transpose(Image.ROTATE_180)
# transpose有点torchvision里面的compose的感觉,把一个操作函数作为参数输入
img3.paste(area,box)
plt.imshow(img3)
<matplotlib.image.AxesImage at 0x272dddd1a00>

在这里插入图片描述

额,只能说想笑但是笑不出来。。。。=-=只希望后面他不要开着隐身来刀我(滑稽.jpg)

5.尺寸(分辨率)调整和旋转

好了,既然刚刚以及提到了图片旋转和伸缩,那我们就直接来。

img3=img3.resize((128,128))
plt.subplot(1,2,1)
plt.imshow(img3)
img3=img3.rotate(90)    # 输入单位为度
plt.subplot(1,2,2)
plt.imshow(img3)
img3.close()

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:02:36  更:2022-02-04 11:04:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:56:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码