Python PIL绘制矩形框的常用方法总结
作者: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绘制矩形框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
