首页 > 解决方案 > 如何自动裁剪徽标图像的背景(最好是任何颜色)

问题描述

我正在尝试自动裁剪徽标周围的背景。现在我正在使用 getbbox 进行裁剪,但它并不总是有效。

以下是我用来测试自动裁剪器的图像: 在此处输入图像描述

运行后

# crop out background
queries = [logo.crop(ImageOps.invert(logo).getbbox()) for logo in queries]
queries = [logo.crop(logo.getbbox()) for logo in queries]

这是结果:

在此处输入图像描述

正如您所看到的,除了少数情况(例如 Adob​​e、Google 和 LinkedIn 中的徽标,其中的边界框不是人们所期望的那样)之外,它大部分都有效。有人可以给我一些关于为什么这并不总是按预期执行以及如何改进它的见解吗?

编辑:我尝试按照评论中的建议使用阈值。它对 google 和 linkedin 图像有所帮助,但对 adobe 徽标具有相同的效果。

logos_gray = [logo.convert('L') for logo in logos]
threshold = 250
logos_gray = [logo.point(lambda p: p > threshold and 255) for logo in logos_gray]
logos_gray_inv = [ImageOps.invert(logo) for logo in logos_gray]
for i in range(len(logos_gray_inv)):
    logos[i] = logos[i].crop(logos_gray_inv[i].getbbox())

标签: pythonimage-processingcomputer-visionpython-imaging-librarycrop

解决方案


推荐阅读