Python学习DAY13_图像处理

图形处理

用程序来处理图像和办公文档经常出现在实际开发中,Python 的标准库中虽然没有直接支持这些操作的模块,但我们可以通过 Python 生态圈中的第三方模块来完成这些操作。

相关知识

颜色

大家也许不太记得小时候美术课上的具体内容,但是应该还记得混合红、黄、蓝三种颜料可以得到其他的颜色,事实上这三种颜色就是被称为美术三原色,它们是不能再分解的基本颜色。在计算机中,我们可以将红、绿、蓝三种色光以不同的比例叠加来组合成其他的颜色,因此这三种颜色就是色光三原色,所以我们通常会将一个颜色表示为一个 RGB 值或 RGBA 值。

RGB 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色的的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。

在 RGBA 其中的 A 表示 Alpha 通道,它决定了透过这个图像的像素,也就是透明度 。

RGBA 举例:

|--------|----------------------|
| 名称 | RGBA值 |
| White | (255, 255, 255, 255) |
| Red | (255, 0, 0, 255) |
| Green | (0, 255, 0, 255) |
| Blue | (0, 0, 255, 255) |
| Gray | (128, 128, 128, 255) |
| Yellow | (255, 255, 0, 255) |
| Black | (0, 0, 0, 255) |

像素

像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。

可以将像素视为整个图像中不可分割的单位或者是元素。不可分割的意思是它不能够再切割成更小单位抑或是元素,它是以一个单一颜色的小格存在。每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。

用Pillow操作图像

Pillow 是由从著名的 Python 图像处理库 PIL 发展出来的一个分支,通过 Pillow 可以实现图像压缩和图像处理等各种操作。可以使用下面的命令来安装 Pillow 。

Pillow中最为重要的是Image类,读取和处理图像都要通过这个类来完成。

打开图像 show

python 复制代码
from PIL import Image


if __name__ == '__main__':
    image = Image.open('pl.jpg')
    image.format, image.size, image.mode
    ('JPEG', (500, 281), 'RGB')
    image.show()

裁剪图像 crop

python 复制代码
from PIL import Image


if __name__ == '__main__':
    image = Image.open('pl.jpg')
    rect = 80, 20, 240, 280
    image.crop(rect).show()

生成缩略图 thumbnail

python 复制代码
from PIL import Image


if __name__ == '__main__':
    image = Image.open('pl.jpg')
    size = 250, 140
    image.thumbnail(size)
    image.show()

粘贴图像 paste

python 复制代码
from PIL import Image


if __name__ == '__main__':
    image_pl = Image.open('pl.jpg')
    image_backGround = Image.open('bg.jpg')
    rect = 120, 50, 300, 250
    pl = image_pl.crop(rect)
    image_backGround.paste(pl, (2000, 1200))
    image_backGround.show()

旋转图像 rotate

python 复制代码
from PIL import Image


if __name__ == '__main__':
    image_pl = Image.open('pl.jpg')
    image_pl.rotate(180).show()

翻转图像 transpose

python 复制代码
from PIL import Image


if __name__ == '__main__':
    image_pl = Image.open('pl.jpg')
    image_pl.transpose(Image.FLIP_LEFT_RIGHT).show()

操作像素 putpixel

python 复制代码
from PIL import Image


if __name__ == '__main__':
    image_pl = Image.open('pl.jpg')
    for x in range(200, 300):
        for y in range(20, 100):
            image_pl.putpixel((x, y), (128, 128, 128))
    image_pl.show()

滤镜效果 filter

常用的Python滤镜主要有BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN

python 复制代码
from PIL import Image, ImageFilter


if __name__ == '__main__':
    image_pl = Image.open('pl.jpg')
    image_pl.filter(ImageFilter.BLUR).show()

Python-Pillow 的图像处理还有很多具体的操作,本文仅作为入门使用,需要更多图像处理的朋友可以去看 pillow 官方提供的 handbook (链接:Handbook - Pillow (PIL Fork) 10.3.0.dev0 documentation)

相关推荐
言乐63 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
言乐64 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
yl45305 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿5 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
青柠之夏cc5 小时前
AI与教育:个性化学习助手让“因材施教“成为现实,但代价是隐私?
人工智能·学习
for_ever_love__6 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI6 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
在猴站学算法6 小时前
(SQL注入学习)无回显的报错注入(Error-Based)
学习·网络安全·sql注入·ctf竞赛
I Am a robert girl6 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航19837 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程