PIL getbbox方法如何工作?

时间:2018-06-18 19:29:10

标签: python python-3.x python-imaging-library

我试图了解PIL getbbox(获取边界框)函数,其中"计算图像中非零区域的边界框。"

在下面的代码中,我使用了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。除了self.load()之外,它似乎还会对自身进行某种递归调用。我认为递归函数需要终止条件,但我没有看到?

我觉得它与以某种方式删除图像阵列中的黑色像素有关,但我不理解这些看似神秘的2行代码(下图)。任何帮助我理解这一点将不胜感激。

def getbbox(self):
    """
    Calculates the bounding box of the non-zero regions in the
    image.
    :returns: The bounding box is returned as a 4-tuple defining the
       left, upper, right, and lower pixel coordinate. If the image
       is completely empty, this method returns None.
    """

    self.load()
    return self.im.getbbox()

编辑:粘贴在源代码中

1 个答案:

答案 0 :(得分:0)