以编程方式检测图像是否有边框(返回布尔值)

2024-04-04

首先,我读过这篇文章。如何以编程方式检测图像边框? https://stackoverflow.com/questions/1954742/how-to-detect-an-image-border-programmatically不过,他似乎在问一个稍微不同的问题,即寻找 X/Y 坐标。

我只是想找出是否solid给定照片周围存在边框。 我已经探索过使用 ImageMagick,但这是最好的选择吗? 我从未做过任何与图像相关的编程,所以我希望有一个简单的 api 可以解决这个问题。 我对如何使用这些库也相当陌生,所以任何建议都是值得赞赏的。 我更喜欢 Python 或 Java 的解决方案,不过任何都可以。

Thanks!


我回答了一个相关问题here https://stackoverflow.com/questions/10615901/trim-whitespace-using-pil/10616717#10616717,它删除图像周围的任何边框,它使用PIL http://www.pythonware.com/products/pil/。您可以轻松地调整代码,使其返回True or False是否有边框,如下所示:

from PIL import Image, ImageChops

def is_there_a_border(im):
    bg = Image.new(im.mode, im.size, im.getpixel((0,0)))
    diff = ImageChops.difference(im, bg)
    diff = ImageChops.add(diff, diff, 2.0, -100)
    bbox = diff.getbbox()
    return bbox != (0,0,im.size[0],im.size[1])

然而,这会返回True即使图像只有一侧有边框。但听起来您想知道图像周围是否有边框。为此,将最后一行更改为:

    return all((bbox[0], bbox[1], (bbox[0] + bbox[2]) <= im.size[0], 
                                  (bbox[1] + bbox[3]) <= im.size[1]))

仅当每一侧都有边界时,此命令才会返回 true。

例如:

False:

False:

True:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式检测图像是否有边框(返回布尔值) 的相关文章

随机推荐