软件测试|不会吧,你还不知道用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模块的使用,方便大家的学习和工作!

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

热门文章

最新文章