利用 Python 实现裁剪圆形头像

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

利用 Python 实现裁剪圆形头像分为以下步骤:

1、利用人脸识别接口确定人脸在图片中的位置

2、计算出需要裁剪的区域

3、利用 PIL 库进行裁剪

人脸识别的提供功能很丰富,像我们之前使用到的颜值打分、年龄等。我们这次用到的其实是最基础的功能——人脸检测,即通过人工智能检测图片中是否有人脸,并标出其区域位置。

人脸检测的功能几乎所有的人脸识别接口都会提供,所以我们随便用一个就好。这次我们用微软的 API 来做测试,当然你也可以使用百度、Face ++等公司的 API,只需要替换掉请求接口的部分就可以了。

你可以下面的网址申请微软 API 试用:

接口的使用各家不同,一般来讲会提供一个 key ,在通过网络请求时作为身份鉴别的依据。官方文档一般都会给出详细介绍和示例,这里就不再赘述了,直接上代码。

微软的图片接口支持网络图片地址和字节流两种方法,上面的代码是网络图片的地址的写法,使用时需要填入自己的 key 并修改图片 URL。

如果要使用本地图片,则需要修改为下面的代码。

这段代码会返回一个 JSON 格式的数据:

如果检测到图片中有多个人脸,则会返回多组坐标数据。需要注意的一个问题是,微软的接口 URL 要请求 HTTPS,如果请求 HTTP 网址,则会返回 404 错误代码。

接下来我们需要计算出需要裁剪的区域,由于人脸检测主要是以五官为特征点,返回的坐标主要以脸部为主,不包含头发,人脸检测的区域大概如下图所示。

我这边估算后简单地将人脸检测的区域扩大一倍作为裁剪区域,可以满足需求,当然大家可以根据实际情况进行调整。

接下来我们使用 Python 中的 PIL 库进行裁剪。PIL只支持到 Python 2.7,之后版本应该选择安装 Pillow 库。如果安装的是 Anaconda,已经内置了 pillow,无需安装,否则需要 pip 安装。(假定我们已经通过上面的 API 获取到了人脸上下左右的坐标)

经过以上三个步骤,我们已经实现了使用 Python 自动裁剪圆形头像的功能,我们可以把上面的代码封装为一个函数,留下图片路径作为参数,就可以进行批量处理了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值