繁体   English   中英

如何获取整个文本周围的边界框坐标?

[英]How to get bounding box coordinates around entire text?

我正在使用 PIL 绘制图像并在其上写文字。 在此之后,我想为图像上的文本绘制并获取边界框坐标[(x1, y1), (x2, y2)] 我怎样才能做到这一点? 见下文:

from IPython.display import Image 
import PIL
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw

# Colour Codes
colours = {"black":(0,0,0),
           "white": (255,255,255)
           }

# Image Description
canvas_width = 200
canvas_height = 200
img_center = (canvas_width/2, canvas_height/2)

# Text Description
size = 50
text = "Text"
font = fonts[2]
font = ImageFont.truetype(font, size)

# File Description
image_name = text

# Generate data:

## Create image canvas
img=Image.new("RGBA", (canvas_width,canvas_height), colours["black"])
draw = ImageDraw.Draw(img)

## Add text on canvas
draw.text(img_center, text, colours["white"], font=font, anchor="mm")

## Draw Bounding Box on Text
draw.rectangle(font.getbbox(text))
print("Text at:", font.getbbox(text))

# Display Image
draw = ImageDraw.Draw(img)
display(img)

# Save Image
# img.save(image_name+".png")
print("Image Saved as: ", image_name+".png")

当前output:

在此处输入图像描述

如果你想要文本的边界框 w.r.t。 它在图像中的位置,您需要在img上调用getbbox ,而不是font 然而,这样做也会产生不需要的行为:

Text at:  (0, 0, 200, 200)

那是因为您在没有实际使用 alpha 通道的情况下初始化了RGBA图像。 因此,所有像素的 alpha 通道都是255 ,这样“图像中非零区域的边界框”就是完整图像。 因此,如果实际上不需要 alpha 通道,只需初始化RGB图像即可。

我缩短了您的代码并应用了规定的修改:

from PIL import Image, ImageDraw, ImageFont

# Image
canvas_width = 200
canvas_height = 200
img_center = (canvas_width/2, canvas_height/2)
img = Image.new('RGB', (canvas_width, canvas_height), (0, 0, 0))

# Drawing
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('arial.ttf', 50)
draw.text(img_center, 'Text', (255, 255, 255), font=font, anchor='mm')
draw.rectangle(img.getbbox())
draw = ImageDraw.Draw(img)

print('Text at: ', img.getbbox())

打印 output:

Text at:  (52, 82, 150, 119)

图片 output:

输出

----------------------------------------
System information
----------------------------------------
Platform:      Windows-10-10.0.16299-SP0
Python:        3.8.5
Pillow:        8.1.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM