探索PIL库:Python图像处理的强大工具

前言

在这个视觉至上的时代,图像已成为我们日常生活中不可或缺的一部分。无论是社交媒体上的分享,还是专业领域的图像分析,图像处理技术都扮演着至关重要的角色。但你是否曾想过,如何将这些静态的图像转化为动态的故事,或者从海量的图像数据中提取出有价值的信息?这正是Python图像处理库——PIL(Python Imaging Library)的神奇之处。

欢迎进入PIL的世界,这里是创意与技术的交汇点。

PIL库不仅仅是一个工具集,它是一个强大的盟友,帮助你解锁图像处理的无限可能。从基本的图像编辑到复杂的图像分析,PIL库以其简洁的API和强大的功能,让图像处理变得轻松而高效。无论是调整图片大小、应用滤镜效果,还是进行图像识别和机器学习,PIL库都能助你一臂之力。

随着我们深入探索PIL库的奥秘,你将发现,它不仅能够增强你的图像处理能力,还能够激发你的创造力,让你在图像的世界里自由翱翔。让我们一起揭开PIL库的神秘面纱,开启一段图像处理的奇妙旅程吧!

一、PIL图像处理库简介

Python 中有关图像处理的库有很多,常见的有 PIL、cv2 等。在进行深度学习图像任务的时候,常常会使用 PIL 这个库来读取和处理图片

PIL(Python Imaging Library)库是一个具有强大图像处理能力的第三方库,包含了丰富的像素、色彩等操作功能。

PIL 库支持图像存储、显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放、裁剪、旋转、滤镜、叠加以及向图像添加线条、图像和文字等操作。

安装:

在命令行模式下:pip install pillow

pip 如果版本低,可升级更新:python -m pip install --upgrade pip

根据功能不同,PIL 库共包括 21 个与图片相关的类,这些类可以被看作是子库或 PIL 库中的模块

Image、ImageChops、ImageColor、ImageCrackCode、Image Enhance、ImageDraw ImageFile、ImageFileIO、ImageFilter、Image Font、ImageGL、ImageGrab、Imagemath、ImageOps、ImagePalette、ImagePath、ImageQt、ImageSequence、ImageStat、ImageTk、ImageWin

Image 是 PIL 中最重要的模块

from PIL import Image

二、基本概念

PIL 中所涉及的基本概念有如下几个:颜色模型通道模式尺寸

2.1颜色模型

2.1.1 RGB 颜色模型

组成:红®、绿(G)、蓝(B),每个点三个分量(R,G,B)

通常可以将 r、g、b 分别规整化为【0,1】,当使用 8 bit进行存储时,r、g、b通常取值为 [0,255] 内的整数

2.1.2 CMY色彩空间

CMY 是不同于 RGB 的另外一组基本色彩:Cyan(青)、Magenta(品红)、Yellow(黄),分别是 R、G、B 的补色

比如:青 = 1 - 红色,品红 = 1- 绿色。CMY 称为“减色系统”,而 RGB 称为“加色系统

RGB ——(0,0,0)为黑,(1,1,1)为白;值越大,颜色越亮

CMY ——(0,0,0)为白,(1,1,1)为黑,值越大,颜色越暗

2.2 通道

一幅彩色图像包括三个通道:Red 通道,Green 通道和 Blue 通道

在图像空间显示出来就是三张图片叠加起来,每张图片对应一个通道。而对于黑白图像,则只有 1 个通道

在这里插入图片描述

这张彩色图像是如何存储的?

在图像空间显示出来就是三张图片叠加起来,每张图片对应一个通道

2.3 图像数据

#导入相应的模块
import numpy as np
import matplotlib.pyplot as plt
# 随机生成 300x400 的多维数组
img = np.random.random([300,400])
plt.imshow(img)
plt.show()

图像的像素值可以用矩阵来表示,是一个由像素组成的二维矩阵,每个元素是一个 RGB

图像数据可以转换成 NumPy 中的数组元素

imshow() 功能:将数据显示为图像

  • X:numpy 数组或 PIL 图像
  • cmap:此参数是颜色图实例或注册的颜色图名称

2.4 模式

图像的 模式 定义了图像的类型和像素的位宽。当前支持如下模式:

(1)1:1 位像素,表示黑和白,但是存储的时候每个像素存储为 8 bit

(2)L:8 位像素,表示黑和白

(3)P:8 位像素,使用调色板映射到其他模式

(4)RGB:3x8位像素,为真彩色

(5)RGBA:4x8 位像素,有透明通道的真彩色

(6)CMYK:4x8 位像素,颜色分离(出版图像)

三、用PIL做图像处理

图像是一个由像素组成的二维矩阵,每个元素是一个 RGB 值:

  • Image.open ():打开图像
  • image.show():显示图像
  • image.save(<文件名>):保存图像
  • np.array():将图像转化为数组
  • plt. imshow() :将数组显示为图像

注意: plt. imshow() 和 plt.show() 同时出现才能显示图像

import numpy as np
from PIL import Image
image = Image.open('cat.png')
image.show()
im = np.array (image)
print 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值