接到一个紧急需求:去除镜头中的特定品牌logo

Crossin的编程教室

共 1447字,需浏览 3分钟

 ·

2021-03-29 14:19



大家好,欢迎来到 Crossin的编程教室 !

最近一段时间,国外的一些服装品牌又在作妖,一方面赚着国人的钱,另一方面还发表了所谓的声明,要抵制我们大新疆生产的品质上乘的棉花。随着事件的不断的发酵,微博热搜的一波波迭起。许多明星艺人都纷纷终止了与国外的这些服装品牌终止了合作。比如歌坛天王陈奕迅,之前Eason拿下某品牌全球代言人而且是终身合同,这个级别是非常高的,但仍然第一时间就站出来解除合作,为他的态度点赞!


小编看到这些组织和品牌罔顾事实的行径也非常气愤。想到虽然艺人、节目等与品牌解除合作,仍然有许多之前拍好的海报或节目里品牌logo露出,一张张图片进行打码一定是费事费力。那是不是可以用程序来解决这个问题呢?

查了一些相关的资料,发现这个挺简单的,通过短短的五十行代码就可以自动的对图片中的特定logo进行打码。下面我就给大家分享一下我的实现过程。


01.程序讲解

自动化的对于这些logo进行打码的话,需要分为两步进行处理:

  • 识别图像中的logo,并获取logo的坐标

  • 对logo进行打码的处理


02.识别图像中的logo,并获取logo的坐标

首先,我们先来看一下如何识别图像中的品牌logo。这里的识别我们利用的是百度AI最近比较热门的一个图像识别应用——品牌logo识别。

可以看到,这个应用能够识别的logo超过了两万个商品,包含了我们常见的一些服装品牌的logo。对于图片logo的识别,其程序如下图所示:

程序中首先通过二进制的方式读入通图片,并进行base64的编码,然后将图片和access_token令牌信息向指定的网址进行提交,然后返回logo的信息,包括了logo的品牌名字以及logo在图片中的位置信息。如下图所示:


03.对logo进行打码的处理

有了logo的坐标信息后,接下来我们就是在图片中将logo进行打码,打码的程序如下图所示:

上图程序中,首先读入原始的图片并获取图片的长和宽,然后针对图片中的logo区域,按照logo区域的像素值都加上logo区域的左上角像素值,给logo区域进行打码处理,最后将打码后的图片保存到本地。

由于一张图片中可能有多个logo区域,因此需要通过for循环来对一张图片中的所有logo区域进行打码处理。


04.结果展示

最后,我们通过图片的展示来看一下最终的打码的结果吧,如下图所示。

可以看到,通过程序的运行可以很好的将logo进行一个打码的操作处理。但是在logo的识别过程中,受到光线,logo的形状变化和遮挡等情况的存在,也可能会出现logo的误检和识别不充分的情况。比如下面这张图:


可以看到,左上角的logo处理效果非常好。但中间的logo因为有部分遮挡,再加上纯色块太大,打码效果就不是很理想。所以对于这种情况,也可以考虑增加颜色或图片遮罩来实现。


05.总结

以上就是如何通过简单的五十行程序的处理,实现自动对图像中的logo进行马赛克的处理。欢迎大家自己动手来试一试效果。如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:菜鸟大叔

来源:菜鸟编程大本营


_往期文章推荐_

这个Python库10行代码搞定图像中目标检测




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报