python - 如何自动裁剪徽标图像的背景(最好是任何颜色)
问题描述
我正在尝试自动裁剪徽标周围的背景。现在我正在使用 getbbox 进行裁剪,但它并不总是有效。
运行后
# crop out background
queries = [logo.crop(ImageOps.invert(logo).getbbox()) for logo in queries]
queries = [logo.crop(logo.getbbox()) for logo in queries]
这是结果:
正如您所看到的,除了少数情况(例如 Adobe、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())
解决方案
推荐阅读
- c - 无法将我的应用服务器连接到 FCM XMPP 服务器
- junit - Junit 使用 eq() 参数匹配器与直接传递字符串
- ruby - Ruby vs. Go / sha256 hmac base64 编码字符串不匹配
- node.js - 为什么 Angular 8 推荐 Node 12?
- javascript - Javascript onclick功能不起作用laravel刀片
- angular - 无法在 Angular 中导航相同的路线
- c++ - 无法从 C++/CLR 项目中的静态 C++ 库调用函数
- dns - 我需要获取在特定国家/地区注册的所有域的列表
- c# - Entity Framework 6 因缺少 DbContext 不需要的 SQL 表而引发异常
- reactjs - 不能使用解构的道具 redux 动作