Python从0到100(二十三):用Python处理图像

举报
是Dream呀 发表于 2024/05/28 19:57:37 2024/05/28
【摘要】 Python从0到100(二十三):用Python处理图像

在这里插入图片描述

1.入门知识

在探索图像处理的世界之前,了解一些基础知识是非常重要的。色彩和像素是构成数字图像的基石。

  1. 颜色:在传统的美术中,红、黄、蓝被认为是三原色,它们无法通过混合其他颜色得到。而在数字世界里,红、绿、蓝(RGB)光的组合形成了我们在屏幕上看到的各种颜色。计算机通过调整这三种颜色的强度来产生不同的颜色,并且可以表示透明度(通过RGBA值,其中A代表Alpha通道)。

    名称 RGB值 名称 RGB值
    白色 (255, 255, 255) 红色 (255, 0, 0)
    绿色 (0, 255, 0) 蓝色 (0, 0, 255)
    灰色 (128, 128, 128) 黄色 (255, 255, 0)
    黑色 (0, 0, 0) 紫色 (128, 0, 128)
  2. 像素:图像的基本单元,每个像素都有一个特定的位置和颜色值。像素的集合决定了图像的最终外观。在摄影中,像素数量通常是衡量图像分辨率的一个指标。

2.Pillow库

Pillow是Python的一个图像处理库,它是Python Imaging Library (PIL) 的一个更新分支,它支持多种图像文件格式的操作,包括打开、显示、裁剪、缩放、旋转、像素操作、绘图等。

要安装Pillow,可以使用pip:

pip install pillow

Pillow的核心是Image类,它允许你读取和操作图像。以下是一些基础的操作示例:

2.1读取和显示图像

from PIL import Image

image = Image.open('guido.jpg')
print(image.format)  # 输出图像格式,比如JPEG
print(image.size)   # 输出图像尺寸,比如(500, 750)
print(image.mode)   # 输出图像模式,比如RGB
image.show()        # 显示图像

在这里插入图片描述

2.2剪裁图像

image.crop((80, 20, 310, 360)).show()

在这里插入图片描述

2.3生成缩略图

image.thumbnail((128, 128))
image.show()

在这里插入图片描述

2.4缩放和黏贴图像

guido_image = Image.open('guido.jpg')
guido_head = guido_image.crop((80, 20, 310, 360))
luohao_image = Image.open('luohao.png')
luohao_image.paste(guido_head.resize((int(guido_head.size[0] / 1.5), int(guido_head.size[1] / 1.5))), (172, 40))
luohao_image.show()

2.5旋转和翻转

image.rotate(45).show()
image.transpose(Image.FLIP_TOP_BOTTOM).show()

2.6操作像素

for x in range(80, 310):
    for y in range(20, 360):
        image.putpixel((x, y), (128, 128, 128))
image.show()

2.7滤镜效果

from PIL import ImageFilter

image.filter(ImageFilter.CONTOUR).show()

在这里插入图片描述

3.使用Pillow绘图

ImageDraw模块提供了绘图功能,可以绘制形状和添加文字。以下是一个绘图示例:

import random
from PIL import Image, ImageDraw, ImageFont

def random_color():
    return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)

image = Image.new('RGB', (800, 600), color=(255, 255, 255))
drawer = ImageDraw.Draw(image)
font = ImageFont.truetype('Kongxin.ttf', 32)
drawer.text((300, 50), 'Hello, world!', fill=(255, 0, 0), font=font)
drawer.line((0, 0, 800, 600), fill=(0, 0, 255), width=2)
drawer.line((800, 0, 0, 600), fill=(0, 0, 255), width=2)
drawer.rectangle((300, 200, 500, 300), outline=(255, 0, 0), width=2)
for _ in range(4):
    drawer.ellipse((150, 220, 310, 380), outline=random_color(), width=8)
image.show()
image.save('result.png')

4.总结

Python提供了强大的库来处理图像,如Pillow和OpenCV,这些库可以帮助我们完成从简单的图像编辑到复杂的图像分析的各种任务。通过编程,我们可以自动化许多重复性的工作,提高效率。图像处理只是Python应用的冰山一角,它的能力远不止于此。继续探索Python的世界,你会发现更多令人兴奋的可能性。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。