python案例一键自动抠图生成证件照(代码片段)

走召大爷 走召大爷     2022-11-28     322

关键词:

0 效果与体验

不想去照相馆?担心肖像隐私被第三方获取?不会抠图?本文实现基于人工智能的一键自动抠图生成证件照。​在进入正文之前,先看最终效果:

为了让读者快速体验,我写了个小程序: 证照工具箱,可打开直接体验。

1 人脸检测

在制作证件照时,首选需要检测人脸。根据指定的输出大小将人脸区域等比裁剪。

1.1 人脸检测

这里使用了Retina人脸检测模型,因为篇幅原因,具体使用方法不再描述详细调用过程,如有需要请关注我的公众号:Python学习实战,后台回复:Retina。即可获取作者已封装好的人脸检测调用源码。

1.2 人脸裁剪

具体实现代码逻辑如下:


def crop(rgb, dh, dw):
    oh, ow, _ = rgb.shape
    bgr = cv2.cvtColor(rgb, cv2.COLOR_RGB2BGR)
    box = infer_face_detector(bgr)

    leye_x, leye_y, reye_x, reye_y = box[5:9]
    lzb_x, lzb_y, rzb_x, rzb_y = box[11:15]
    left = int(leye_x - (reye_x - leye_x) * 2)
    right = int(reye_x + (reye_x - leye_x) * 2)
    ceye_y = (leye_y + reye_y) / 2
    czb_y = (lzb_y + rzb_y) / 2
    top = int(ceye_y - (czb_y - ceye_y) * 2)
    bottom = int(czb_y + (czb_y - ceye_y) * 2)

    th = dh * (right - left) / dw 
    tag = abs(th - (bottom - top)) / 2
    if th < bottom - top:  
        top = int(top + tag)
        bottom = int(bottom - tag)
    else:   
        top = int(top - tag)
        bottom = int(bottom + tag) 

    if top < 0:
        rgb = np.pad(rgb, ((-top, 0), (0, 0), (0, 0)), "edge") 
        top = 0 
    if left < 0:
        rgb = np.pad(rgb, ((0, 0), (-left, 0), (0, 0)), "edge")
        left = 0
    if right > ow:
        rgb = np.pad(rgb, ((0, right - ow), (0, 0), (0, 0)), "edge")
    if bottom > oh:
        rgb = np.pad(rgb, ((0, 0), (0, bottom - oh), (0, 0)), "edge")  
    rgb = rgb[top:bottom, left:right, :] 
    
    return rgb

2 自动抠图

github下载基于深度学习的自动抠图模型,得到一张alpha图。alpha图将前景和背景分离,同样,因为篇幅原因,这里不具体描述如何去调用。如有需要请关注我的公众号:Python学习实战,后台回复:抠图。即可获取作者已封装好的人像抠图调用源码。这里只展示抠图效果:

3 合成证件照

合成证件照公式:out = src * alpha + (1 - alpha) * bg,输出示意图如下:

4 在线体验

搜索小程序 :证照工具箱,即可直接体验。

相关源码获取:

  1. 关注我的公众号:Python学习实战
  2. 后台回复:抠图。获取作者已封装好的人像抠图调用源码。
  3. 后台回复:Retina。获取作者已封装好的人脸检测调用源码。

欢迎关注我的公众号:Python学习实战,专注于PythonPytorchNumpy等技术,第一时间获取最新更新。如果您觉得本文有帮助,帮忙点个赞,这是对我最大的鼓励!

opencv——证件照自动抠图

...前手头就是一个蓝底的,又不想手动抠图,于是想做一个自动换背景的程序。先上效果:具体分三步,第一步是大体的背景转换,把蓝色变为白色:voidcolortransfer(cv::Matimage)//蓝背景转白背景,有边缘残留{intDiff;intnum_row=image.rows;in... 查看详情

用python制作可视化gui界面,一键实现证件照背景颜色的替换(代码片段)

作者|欣一来源| Python爱好者集中营今天,我们来分享一下如何通过Python的十来行代码来替换证件照的背景颜色,那么在最后,小编也会将上述的流程制作成一个GUI界面来方便大家使用。关于界面的大致模样其实和先... 查看详情

证件照制作如此简单——基于人脸检测与自动人像分割轻松制作个人证件照(c++实现)(代码片段)

...PS来做图像处理,或者下载各种证件照相关的APP,一键制作,基本的步骤是先按人脸为基准切出适合的尺寸,然后把人像给抠出来,对人像进行美化处理,然后替换上要使用的背景色,比如蓝色或红色... 查看详情

人像抠图——基于深度学习一键去除视频背景(代码片段)

前言1.抠图技术应用很广泛,比如证件照,美体,人体区域特殊处理,还有B站的字幕穿人效果等等。这些的关键技术都在于高精度高性能的分割算法。RobustVideoMatting是来自字节跳动视频人像抠图算法(RVM)... 查看详情

python案例用某度ai接口实现抠图并改图片底色(代码片段)

文章目录前言正文一、注册百度AI账号,创建人像分割应用二、代码实现1.引入库2.获取AccessToken核心代码4.图片底色填充5.图片压缩6.获取图图片大小7.png格式转jpg8.主函数9.完整代码[重要]使用前注意事项最终效果图总结前言嗨... 查看详情

昨晚,我用python帮学妹p证件照自拍,然后发现。。。(代码片段)

人生苦短,我用Python前因后果先上效果准备工作证件照尺寸调整证件照背景调整各种背景颜色图片完整代码结尾最后前因后果事情是这样的晚上我正在聚精会神写代码(打游戏~)突然,收到学妹给我发来的消息还... 查看详情

如何用美图秀秀更改照片背景颜色

...图:第三步:点击抠图笔后,会出现三种抠图模式。选择自动抠图会方便操作。如图:第四步:这时要用抠图笔在证件照人物头像上随意画几下,抠图笔会自动帮证件照自动抠图。抠好后,点击完成抠图。如图:第五步:完成抠... 查看详情

[数字媒体]photoshop基础之图像校正抠图(证件照)和融合

...您喜欢~文章目录一.Excel证件照换背景二.PS图像校正三.PS抠图四.PS图像融合五.总结一.Excel证件照换背景大家在找工作或面试过程中,通常会遇到证件照替换背景的问题,下面介绍Excel替换背景的一种简单方法。大家试试Py 查看详情

[数字媒体]photoshop基础之图像校正抠图(证件照)和融合

...您喜欢~文章目录一.Excel证件照换背景二.PS图像校正三.PS抠图四.PS图像融合五.总结一.Excel证件照换背景大家在找工作或面试过程中,通常会遇到证件照替换背景的问题,下面介绍Excel替换背景的一种简单方法。大家试试Py 查看详情

gimp抠图/证件照背景色

1.选区2.enter确定3.增加alpha通道。图层菜单-->透明-->添加alpha通道。目的是为了选区最终确定后,删除选区之外的部分到透明。4.最终抠取图像。选择菜单-->反转;编辑菜单-->清除。抠取图像成功。文件菜单-->导出为…... 查看详情

python几行代码实现一键抠图,收费应用byebye(代码片段)

⛳️需求来源好友A:橡皮擦,可否提供网页,上传带人像的图片,然后可以直接抠图,最好直接生成PNG图片下载。橡皮擦:每天需要调用多少次?好友A:大概100次吧。橡皮擦:妥了,给你写个免费的吧。本案例的实战需求是对... 查看详情

ps证件照换背景

综述博主原创内容。在PS里,对于抠图,比较有技术含量的便是抠头发丝了,下面为大家带来一个比较详细的抠头发丝的教程。素材准备在这里我们用这张图片作为抠图素材,下面让我们一步步来演示抠图的过程,并为之更换背... 查看详情

python几行代码实现一键抠图,收费应用byebye(代码片段)

⛳️需求来源好友A:橡皮擦,可否提供网页,上传带人像的图片,然后可以直接抠图,最好直接生成PNG图片下载。橡皮擦:每天需要调用多少次?好友A:大概100次吧。橡皮擦:妥了,给你... 查看详情

❤️python实用工具之制作证件照(有界面附源码赞关藏)❤️(代码片段)

...楼图文章目录一点想说的必要配置removebg配置安装对应的Python库获取APIKey无界面版修改图片背景色修改图片大小升级版设置窗口主题与标题添加选择图片路径组件添加选择保存路径组件添加选择背景颜色组件添加填写图片尺寸组... 查看详情

python将红底证件照转成蓝底(代码片段)

前言emmm…快开学了,手头只有红底证件照,但是学院要求要蓝底,这可咋办呢。懒得下ps了。自己撸起来吧。方法一:lablemelableme标注完后。得到一个json文件,然后将这种json文件转成掩码图.#代码来自https://blog.csdn.... 查看详情

java如何实现证件照换底色|背景换色(代码片段)

...的底片换色,本文以为证件照片为例,用java代码生成多个底色不一样的图片。代码仅仅用到java包下的类,不需要借助外部包,用到的包有javax.imageio、java.awt、java.io等。教程目标图片实现思路图片是由一个个像素... 查看详情

ai一键抠图助你快速打造活动宣传海报(代码片段)

本文介绍使用PaddleHub工具快速完成人像抠图。背景我们经常看到各种大牛演讲或者活动的各种海报和宣传页,职业照造型姿势那叫一个专业。那么,学好姿势排好照片后,如何给自己做一个宣传海报呢?PS的使用... 查看详情

一键智能抠图-原理实现(代码片段)

1.效果秀有些朋友已经体验过了www.cvpy.net最近新上的一键智能抠图和换背景的功能,智能判断前景并自动抠图,效果还是挺惊艳的,放几张图看看效果:请注意看这位喵星人右侧性感的胡须,抠的可谓是非常精... 查看详情