Python PIL绘制矩形框的常用方法总结

 更新时间:2026年05月26日 08:21:02   作者:detayun  
本文介绍了使用Python PIL库绘制矩形框的方法,基础代码展示了如何打开图片、创建绘图对象、绘制红色矩形框并保存,最后提示了中文路径的处理建议,希望帮助大家避免常见问题

基础代码

from PIL import Image, ImageDraw

# 打开图片
img = Image.open('your_image.jpg')

# 创建绘图对象
draw = ImageDraw.Draw(img)

# 矩形坐标 (x1, y1, x2, y2)
coords = (23, 21, 69, 76)

# 画矩形框(红色,线宽2)
draw.rectangle(coords, outline='red', width=2)

# 保存图片
img.save('output.jpg')
img.show()

效果说明

参数说明
coords = (23, 21, 69, 76)左上角(23,21),右下角(69,76)
outline='red'边框颜色
width=2边框粗细

更多用法

1.填充矩形(实心)

draw.rectangle(coords, fill='blue', outline='red', width=2)

2.半透明矩形(Pillow 9.0+)

draw.rectangle(coords, fill=(255, 0, 0, 128), outline='red', width=2)
# RGBA,最后一个值是透明度 0-255

3.多种颜色样式

# 绿色虚线框
draw.rectangle(coords, outline='green', width=3)

# 黄色粗框
draw.rectangle(coords, outline='yellow', width=5)

# 白色细框
draw.rectangle(coords, outline='white', width=1)

完整示例(含新建图片)

from PIL import Image, ImageDraw

# 如果没有图片,可以新建一个
img = Image.new('RGB', (200, 200), color='white')
draw = ImageDraw.Draw(img)

# 画矩形
draw.rectangle((23, 21, 69, 76), outline='red', width=2)

img.save('result.jpg')
img.show()

坐标示意

(23,21) ───────── (69,21)
   │                 │
   │   矩形区域       │
   │                 │
(23,76) ───────── (69,76)

提示:如果图片路径包含中文,建议用 Image.open(r'路径') 或处理编码问题。

知识扩展

在 Python 中用 PIL(实际是它的升级版 Pillow)绘制矩形框是非常简单的。通过 ImageDraw.Draw 对象的 rectangle() 方法即可实现。

1. 安装 Pillow

pip install Pillow

2. 基本用法

from PIL import Image, ImageDraw
# 创建一个 400x300 的白色图像(RGB模式)
img = Image.new('RGB', (400, 300), color='white')
# 获取绘图上下文
draw = ImageDraw.Draw(img)
# 绘制矩形框:(x1, y1) 左上角,(x2, y2) 右下角
draw.rectangle((50, 50, 350, 250), outline='red', width=3)
# 显示或保存图像
img.show()
img.save('rectangle.png')

3. 参数详解

rectangle(xy, fill=None, outline=None, width=1)

参数说明
xy矩形坐标,可接受 (x1, y1, x2, y2) 或 [(x1,y1), (x2,y2)] 两种形式
fill填充颜色,如 'blue'(0,255,0)'#FF00FF'None 表示不填充
outline边框颜色,同上。若为 None 则不绘制边框
width边框宽度(像素),默认为 1

4. 示例:实心矩形 + 边框

draw.rectangle((50, 50, 150, 150), fill='lightblue', outline='black', width=3)

5. 示例:多个矩形,支持 RGBA 透明度

from PIL import Image, ImageDraw
img = Image.new('RGBA', (400, 300), color=(255,255,255,0))  # 透明背景
draw = ImageDraw.Draw(img)
# 半透明填充(需要 RGBA 模式)
draw.rectangle((30, 30, 180, 130), fill=(255,0,0,128), outline=(0,0,0,255))
draw.rectangle((200, 50, 350, 200), outline='green', width=4)
img.save('rect_alpha.png')

6. 在现有图像上绘制矩形框(例如标注人脸)

from PIL import Image, ImageDraw
img = Image.open('photo.jpg')
draw = ImageDraw.Draw(img)
# 在坐标区域绘制红色框
draw.rectangle((120, 80, 250, 210), outline='red', width=5)
img.show()
img.save('annotated.jpg')

7. 使用相对坐标(通过 bounding box)

# 对 PIL 图像对象本身获取宽度高度
width, height = img.size
left = width * 0.2
top = height * 0.2
right = width * 0.8
bottom = height * 0.8
draw.rectangle((left, top, right, bottom), outline='yellow', width=4)

总结

  • 核心是 ImageDraw.Draw 的 rectangle() 方法。
  • 可以自由指定颜色、边框宽度、是否填充。
  • 支持 RGB / RGBA 颜色模式,实现透明或半透明效果。
  • 配合 Image.new() 可以创建全新矩形图像,配合 Image.open() 可以在已有图片上标注。

到此这篇关于Python PIL绘制矩形框的常用方法总结的文章就介绍到这了,更多相关Python PIL绘制矩形框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python实现遗传算法的详细步骤

    使用Python实现遗传算法的详细步骤

    遗传算法是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达尔文的进化论和孟德尔的遗传学说,其本质是一种高效、并行、全局搜索的方法,本文给大家介绍了使用Python实现遗传算法的详细步骤,需要的朋友可以参考下
    2023-11-11
  • jupyter note 实现将数据保存为word

    jupyter note 实现将数据保存为word

    这篇文章主要介绍了jupyter note 实现将数据保存为word,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Numpy之布尔索引的实现

    Numpy之布尔索引的实现

    本文主要介绍了Numpy之布尔索引的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python实现感知机线性分类模型示例代码

    python实现感知机线性分类模型示例代码

    这篇文章主要给大家介绍了关于python实现感知机线性分类模型的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Python中np.random.randint()参数详解及用法实例

    Python中np.random.randint()参数详解及用法实例

    numpy.random.randint()函数不仅可以生成一维随机数组,也可以生成多维度的随机数组,下面这篇文章主要给大家介绍了关于Python中np.random.randint()参数详解及用法的相关资料,需要的朋友可以参考下
    2022-09-09
  • 手把手教你部署AI小说生成器(Python环境搭建)

    手把手教你部署AI小说生成器(Python环境搭建)

    本文详细介绍了如何使用Python+AI从零开始搭建属于自己的AI小说生成器,文章分为环境准备、第一次安装、关机重启、配置大脑等步骤进行讲解,帮助用户轻松实现AI辅助创作
    2026-04-04
  • python实现2014火车票查询代码分享

    python实现2014火车票查询代码分享

    学习习PYTHON开始,实现了一个火车票查询的小功能,希望能帮大家买到回家的票
    2014-01-01
  • Pickle模块中的dump()和load()方法简介

    Pickle模块中的dump()和load()方法简介

    Pickle模块实现了基本的数据序列化与反序列化操作,通过序列化操作,我们可以将程序中运行的对象信息转化为字节流保存到文件中去,永久存储在磁盘上,这篇文章主要介绍了Pickle模块中的dump()和load()方法介绍,需要的朋友可以参考下
    2023-03-03
  • 整理Python中常用的conda命令操作

    整理Python中常用的conda命令操作

    今天给大家带来的是关于Python的相关知识,文章围绕着Python中常用的conda命令行操作展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • python串口如何读取byte类型数据并访问

    python串口如何读取byte类型数据并访问

    这篇文章主要介绍了python串口如何读取byte类型数据并访问方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论