PIL getbbox方法是如何工作的?

2024-09-28 19:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解PIL getbbox(getboundary box)函数,它“计算图像中非零区域的边界框”

在下面的代码中,我使用getbbox,它返回的结果与我对简单灰度图像的期望完全一致。在

import numpy as np
from PIL import Image, ImageFont, ImageDraw, ImageEnhance,ImageChops
import PIL

def trim(im):
dr = ImageDraw.Draw(im)
bg = Image.new(im.mode, im.size, im.getpixel((0,0)))

diff = ImageChops.difference(im, bg)
bbox = diff.getbbox() 

#None if getbbox returns None
if bbox:
     return im.crop(bbox)

但是我不明白它是如何根据它的source code工作的。除了自加载(),它似乎对自己执行某种递归调用。我以为递归函数需要终止条件,但我看不到?在

我觉得这和去除图像数组中的黑色像素有关,但我不明白这些看似神秘的2行代码(如下)。如果能帮助我理解这一点,我将不胜感激。在

^{pr2}$

编辑:粘贴在源代码中


Tags: 代码图像imageimportnoneifpildiff