我试图理解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}$编辑:粘贴在源代码中
正如已经说过的,这不是递归。im.getbbox()调用https://github.com/python-pillow/Pillow/blob/master/src/_imaging.c#L1947
然后调用imagingGetBox-https://github.com/python-pillow/Pillow/blob/master/src/libImaging/GetBBox.c#L24
相关问题 更多 >
编程相关推荐