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库-python图像处理类库 -> 正文阅读

[人工智能]【计算机视觉】PIL库-python图像处理类库

PIL (Python Image Library) 为 python 提供图像处理功能,以及基本图像操作(图像缩放、剪裁、旋转、颜色转换等)
在PIL中,最重要的模块为 Image

将图像转换为数组

在 python 中通过 Image 模块读取指定地址图片并转化为二维数组:

from PIL import Image
import numpy as np

# 图片路径
img_path = r"D:\csdn相关内容\计算机视觉知识储备\PIL\volvo_xc90.jpg"

# 读取图片
try:
    img = Image.open(img_path)
except IOError:
    print("Cannot open the img from the path",img_path)

# 将图片转化为数组格式
img_matrix = np.asarray(img)

print(img_matrix)		# 打印数组
print(img_matrix.shape)	# 打印数组的维度信息

img_matrix.shape 打印结果:

在这里插入图片描述

由打印结果我们可以知道这个图像的分辨率为 1920 ? 1080 1920*1080 1920?1080 且为彩色图(3代表RGB三个Channels)。
而从数组的角度来说,该图像被转化成为了三维数组,数组大小为 1080 ? 1920 ? 3 1080*1920*3 1080?1920?3

事实上,数组中的每个元素代表着图像某通道指定位置的颜色信息, e . g . e.g. e.g.

img_matrix[0,0,0]

代表着通道0(Red通道)的左上角第一个元素的颜色信息。这里假设读者已知图像的颜色信息的取值范围为 [ 0 : 255 ] [0:255] [0:255]。由打印可知R通道值为157。同样可以打印G通道以及B通道,将三个通道的颜色信息融合在一起,即为左上角第一个元素的综合颜色信息。

在这里插入图片描述


转换图像的格式

通过 .save() 方法,我们可以将图片保存为指定格式的图片。

from PIL import Image

# 输入&输出图片路径
img_path = r"D:\csdn相关内容\计算机视觉知识储备\PIL\volvo_xc90.jpg"
out_img_name = img_path.split(".")[0] + ".png"

# 转化图片格式为png
Image.open(img_path).save(out_img_name)

创建缩率图

通过 thumbnail 函数,可以将图片保存为指定大小的缩率图;缩小为 thumbnail 接受的元组参数中指定最长边大小等比例缩放。

from PIL import Image

# 输入&输出图片路径
img_path = r"D:\csdn相关内容\计算机视觉知识储备\PIL\volvo_xc90.jpg"
out_img_name = "thumb_img.png"

# 创建图片缩率图
img = Image.open(img_path)
img.thumbnail((960,960))
img.save(out_img_name)

在这里插入图片描述


复制和粘贴图像区域

通过 crop() 函数可以从一幅图像中裁剪指定区域,crop() 函数的输入为一个四元组 (a, b, c, d),其中元素的含义可以理解为:(a,b) 为区域左上角坐标,(c,d) 为区域右下角坐标。

from PIL import Image

# 输入&输出图片路径
img_path = r"D:\csdn相关内容\计算机视觉知识储备\PIL\volvo_xc90.jpg"
out_img_name = "crop_img.png"

# 读取图片
img = Image.open(img_path)

# 指定选择区域
box = (500,500,1000,1000)       # 顺序为 (左,上,右,下)
region = img.crop(box)

# 将选择部分旋转90度然后放回
region = region.transpose(Image.ROTATE_90)
img.paste(region, box)

# 输出图片
img.save(out_img_name)

在这里插入图片描述


调整尺寸和旋转

调整尺寸
调整尺寸的大小与缩率不同的在于,缩略会保存图片的宽高比并进行缩放;而调整则不会保留宽高比缩放到新设定尺寸。
对于调整尺寸 (不保存宽高比) ,我们可以用 resize() 函数,resize() 函数的输入为一个二元组 (a,b),其中元素a代表新尺寸的宽,而b代表高。

from PIL import Image

# 输入&输出图片路径
img_path = r"D:\csdn相关内容\计算机视觉知识储备\PIL\volvo_xc90.jpg"
out_img_name = "resize_img.png"

# 打开图片并更改图片尺寸
img = Image.open(img_path).resize((1920,960))
img.save(out_img_name)

在这里插入图片描述

旋转
旋转通过函数 rotate(α),其中 α 代表旋转的角度,旋转角度为逆时针,旋转后的图像分辨率不发生改变:

from PIL import Image

# 输入&输出图片路径
img_path = r"D:\csdn相关内容\计算机视觉知识储备\PIL\volvo_xc90.jpg"
out_img_name = "rotate_img.png"

# 打开图片并更改图片尺寸
img = Image.open(img_path).rotate(45)
img.save(out_img_name)

在这里插入图片描述

分辨率未发生改变:
在这里插入图片描述
所以旋转后势必会丢失一些数据信息,上述案例中即左上角与右下角的部分像素信息:

# # # 接上
import numpy as np
img_array = np.asarray(img)
print(img_array[0][0][0], img_array[0][0][1], img_array[0][0][2])

在这里插入图片描述

e . g . e.g. e.g. 左上角元素的 RGB (0, 0, 0) 为黑色,图片旋转后将该部分信息将丢失,我们再将其旋转回:

# # # 接上
# 重新旋转回
img_back = Image.open(out_img_name).rotate(-45)
img_back.save("rotate_back_img.png")

在这里插入图片描述


图片链接(免费下载):https://download.csdn.net/download/weixin_43098506/86835234
更多相关问题以及可补充内容,留言或联系!感谢好评!👏

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:56:46  更:2022-10-31 11:59:34 
 
开发: 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年12日历 -2024/12/28 2:50:45-

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