软件测试|不会吧,你还不知道用pillow绘制图像?

简介: 软件测试|不会吧,你还不知道用pillow绘制图像?

前言

我们之前做数据可视化分享的时候,讲解了使用pyecharts绘制图像的方法,比如绘制柱状图,饼状图,折线图等,但是,我们如果要绘制不定形状的图像,应该怎么去绘制呢,当然,还是要使用到我们的神器pillow来绘制。下面我们就来介绍使用pillow来绘制各种类型的图像。

pillow绘制图像,需要引入ImageDraw类来进行图像绘制。

绘制图形

绘制图形之前,我们先要生成一个底图,用来绘制我们的图形,代码如下:

from PIL import Image, ImageDraw

image = Image.new('RGB', (600, 400), 'lightgrey')
draw = ImageDraw.Draw(image)

ImageDraw类给我们提供了丰富的选择,支持我们绘制圆弧,饼图,折线图,矩形图,多边形等方法,下面我们来一一介绍:

  1. 绘制线形图

我们可以绘制直线和折线图,代码如下:

draw.line((50, 50, 100, 150), fill='green', width=6)
draw.line((50, 200, 75, 300, 100, 250, 75, 200), fill='red', width=10, joint='curve')

image.save('imagedraw_lines.png')

绘制的图形如下:

在这里插入图片描述

  1. 绘制多边形

我们可以通过调用polygon()和regular_polygon来绘制多边形和正多边形,代码如下:

draw.polygon((150, 50, 220, 150, 250, 50), fill='purple')
draw.regular_polygon((200, 300, 75), n_sides=5, rotation=10, fill='green')

image.save('imagedraw_polygon.png')

绘制图像如下:

在这里插入图片描述

  1. 绘制矩形

我们可以通过rectangle()方法来绘制矩形,代码如下:

#绘制矩形
draw.rectangle((100,100,120,150),fill=(0,255,0),outline=(255,0,0))
#绘制正方形
draw.rectangle(((200,200),(250,250)),fill=None,outline=(0,0,255),width=5)

绘制图像如下:

在这里插入图片描述

  1. 绘制椭圆形与圆形

我们可以使用ellipse()方法来绘制椭圆形,代码如下:

# 绘制椭圆
draw.ellipse((300, 50, 450, 150), outline='red', width=4)
# 绘制圆形
draw.ellipse((200, 200, 250, 250), outline='blue', width=3)

绘制的图形如下:

在这里插入图片描述

  1. 绘制饼状图,弧线及弦线

我们可以通过arc()绘制弧线,通过chord()绘制弦线,通过pieslice()绘制饼状图,示例代码如下:

draw.arc((300, 200, 450, 350), start=90, end=200, fill='yellow', width=4)
draw.chord((400, 200, 550, 350), start=90, end=200, fill='cyan')
draw.pieslice((500, 200, 650, 350), start=90, end=200, fill='magenta')

绘制的图像如下:

在这里插入图片描述

绘制文字图

Pillow通过ImaegFont模块(用于选择字体)和ImageDraw模块提供处理文本的功能,绘制文字图形时,我们需要引入字体,可以下载或者添加系统的字体路径,指定字体,这里我们下载字体文件并导入来绘制文字图。

绘制文字图时,我们需要调用text()方法,示例代码如下:

font_style = ImageFont.truetype("font/SimHei.ttf", 20, encoding="utf-8")
draw.text((100,100), '拜仁慕尼黑', font=font_style, fill='blue')
draw.text((200,250), 'forever no.1', font=font_style, fill='red')

绘制图像如下:

在这里插入图片描述

总结

本篇文章主要介绍了使用pillow绘制不同形状的图形,以及绘制文字图形的方法,希望能帮助大家更了解pillow模块的使用,方便大家的学习和工作!

相关文章
|
6月前
|
存储 缓存 算法
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
|
6月前
|
算法 异构计算
基于FPGA的图像高斯滤波实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像高斯滤波实现,包括tb测试文件和MATLAB辅助验证
|
6月前
|
算法
m基于OFDM+QPSK和LDPC编译码以及MMSE信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
MATLAB2022a仿真实现了无线图像传输的算法,包括OFDM、QPSK调制、LDPC编码和MMSE信道估计。OFDM抗频率选择性衰落,QPSK用相位表示二进制,LDPC码用于前向纠错,MMSE估计信道响应。算法流程涉及编码、调制、信道估计、均衡、解码和图像重建。MATLAB代码展示了从串行数据到OFDM信号的生成,经过信道模型、噪声添加,再到接收端的信道估计和解码过程,最终计算误码率。
71 1
|
1月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
415 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
1328 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
333 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
194 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
1月前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
166 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
463 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```