Pytorch上手2
ToTensor() 是一个转换操作,它将 PIL 图片或者 NumPy ndarray 转换成 FloatTensor,并且把每一个数值归一化到 [0, 1] 区间(原先的数值区间为 [0, 255])。这一步是为了方便后续的数值处理和模型训练。
Pillow库介绍:
Pillow是Python中一个流行的图像处理库,它是著名的PIL(Python Imaging Library)库的一个活跃的分支。Pillow用于创建、修改图片以及复杂的图像操作,它支持多种文件格式,并提供强大的图像处理能力。在 PIL 中,任何一副图像都是用一个 Image 对象表示,而这个类由和它同名的模块导出。
常用对象和函数:
Image类
Image.open(filepath): 打开并加载一个图像文件。
Image.save(filepath): 保存图像到文件。
Image.show(): 显示图像。
Image.resize((width, height)): 调整图像大小。
Image.crop((left, top, right, bottom)): 裁剪图像。
Image.rotate(angle): 旋转图像一定的角度。
Image.filter(filter): 应用某种滤镜,如模糊、锐化等。
Image.convert(mode): 转换图像的颜色模式,例如从RGB转为灰度"RGB"->"L"。
滤镜与效果 (通过 ImageFilter 和 ImageEnhance 模块使用)
ImageFilter.GaussianBlur(radius): 高斯模糊。
ImageEnhance.Color(image).enhance(factor): 调整图像的颜色平衡。
ImageEnhance.Contrast(image).enhance(factor): 调整图像对比度。
ImageEnhance.Brightness(image).enhance(factor): 调整图像亮度。
具体应用示例:
示例1:打开和显示图像
from PIL import Image
# 打开图像文件
img = Image.open("path_to_image.jpg")
# 显示图像
img.show()
示例2:调整图像大小和裁剪
from PIL import Image
# 打开图像文件
img = Image.open("path_to_image.jpg")
# 调整图像大小
img_resized = img.resize((200, 200))
# 裁剪图像
img_cropped = img.crop((50, 50, 150, 150))
# 显示裁剪后的图像
img_cropped.show()
示例3:图像滤镜效果
from PIL import Image, ImageFilter
# 打开图像
img = Image.open("path_to_image.jpg")
# 应用高斯模糊滤镜
blurred_img = img.filter(ImageFilter.GaussianBlur(radius=5))
# 显示模糊后的图像
blurred_img.show()
示例4:调整图像对比度和亮度
from PIL import Image, ImageEnhance
# 打开图像
img = Image.open("path_to_image.jpg")
# 调整对比度,增强因子大于1提高对比度,小于1降低对比度
contrast_enhancer = ImageEnhance.Contrast(img)
img_contrasted = contrast_enhancer.enhance(2.0)
# 调整亮度
brightness_enhancer = ImageEnhance.Brightness(img_contrasted)
img_brightened = brightness_enhancer.enhance(1.5)
# 显示调整后的图像
img_brightened.show()
扩展:
Image.open() 函数是Pillow库中用于加载图像的基本函数。它支持多种图像格式,能够处理几乎所有常用的图像类型。以下是 Image.open() 可以打开的主要图像格式列表:
PNG:便携网络图形格式,支持无损压缩和透明度。
JPEG:联合图像专家组格式,广泛用于存储和传输照片。支持有损压缩。
GIF:图形交换格式,支持动画和透明度,通常用于简单图形和小动画。
TIFF:标签图像文件格式,用于包含高质量图像的复杂数据结构。常用于专业图像存储。
BMP:位图图像文件,是Windows环境下的原生图像格式。
WebP:一种旨在加速整个网页的图像加载的现代图像格式,支持无损和有损压缩。
ICO:图标文件格式,常用于存储图标。
EPS:封装式PostScript,用于交换图形数据。
IM:Pillow内部格式。
PDF:可移植文档格式,虽然通常用于文档,Pillow可以读取其中的图像内容。
PSD:Photoshop文档,Adobe Photoshop的专有格式。
PPM:便携式像素图。
SGI:Silicon Graphics Image格式。
PCX:PC交换格式,早期的图形文件格式。
TGA:TARGA图像文件,主要用于视频游戏和动画制作。
此外,通过安装额外的库,Pillow也可以支持更多的格式。这些都依赖于Pillow库在编译时所包括的库和功能。例如,支持JPEG、JPEG 2000、WebP等格式可能需要相应的库文件在系统中已安装。
from PIL import Image
# 打开一个图像文件,这里以JPEG格式为例
img = Image.open("example.jpg")
img.show() # 显示图像