用python画肖战_王一博、肖战、吴宣仪、杨紫,2019明星沸点榜,谁的颜值更高,Python告诉你...

比较谁的颜值更高,样本选择是个不小的问题,即使同一个明星,不同的照片也会产生不同的颜值分数,选择不当会造成很大的样本误差。为了尽量减小误差,我们这次的明星图片全部从美桌网来获取(下图)。

下面是下载备用的10位明星图片。其实为了使结果更有说服力,可以每位明星都选取很多张图片,然后分别进行颜值打分后取均值,不过我们又不是什么权威认定,本文只讲过程、不重结果,也就不做那么麻烦的操作了。

现在样本图片准备就绪,下一步就可以开始颜值检测了。不过在此之前也可以先养养眼~~

02

人脸检测

人脸图像的颜值检测我们使用百度的API(免费又好用),只需要注册个账号然后创建应用就可以(下图),其中的API Key和Secret Key后面会用到。

总体来说,使用这个API需要先根据AK和SK生成自己的access_token,然后对需要检测的人脸图片进行格式转换,最后根据要求的格式构建请求url,下面我们结合代码来进行说明。

首先我们建立一个类,初始化的时候进行固定参数赋值,比如我们的AK和SK还有headers;get_token方法会根据AK和SK获取最新的access_token,方法都是官方文档中给出的,大家参照执行就可以。代码如下:

接下来这个函数会将指定图片转换为base64编码,为什么要转换?因为百度人脸检测API目前支持三种图片数据类型:一种就是 BASE64;第二种是 URL,也就是在线的图片源地址;第三种是 FACE_TOKEN。如果是本地图片上传,还是使用BASE64相对方便一些。代码如下:

最后就是人脸检测函数了,这里面大部分内容都是根据文档定制的,需要修改的主要是params部分:

face_field参数指示的是人脸检测后的返回字段,这次我们只需要颜值和性别就可以了,但其实这个API还可以检测很多内容,包括:age, eauty, expression, face_shape, gender, glasses, landmark, landmark150, race, quality, eye_status, emotion, face_type等,具体含义这里就不解释了;

image参数表示需要检测的图片,这里其实是转换成base64后的编码;

image_type参数就是待检测图片的类型了,前面我们说过有BASE64、URL和FACE_TOKEN三种。

还有需要注意就是response.json其实包含了很多信息, 我可以打印出来给大家看下:

而我们需要的信息只有beauty和gender种的type两个数据,所以需要从中一层层的把他们剥离出来。以上就是人脸检测函数的全部功能,代码如下:

到这里一幅图片的人脸检测代码就完整了。

03

颜值打分

现在我们遍历picture文件夹,对其下的每张图片进行人脸检测并打分保存结果。为此我们构建以下代码:

对于picture文件夹中的每幅图片,我们经过人脸检测类得到其beauty和gender两个数据,再跟图片名称(明星名字)一起存入到一个dataframe中,最后保存到CSV文件,来看下最终的结果:

从结果看,百度API给出的颜值评分最高的是朱一龙87.74分,最低的是邓伦63.29分(其实我个人感觉邓伦还是挺帅的)。不过从总体分数分布来看,上榜的这几位明星的颜值还是很高的。

从男星女星颜值均值对比来看,基本是持平状态:

话说我近几年比较喜欢的一名女星赵丽颖没有上榜,这里单独为她做一下颜值检测,评分结果是84.32分,比上榜女星中得分最高的吴宣仪还要高。

文章的最后,我再次声明下本文只讲方法不重结果,纯属技术分享,其测评分数完全由百度API给出,明星照片的选取对测评结果也有很大的影响。 总之相信每个宅男心中都有一个自己的女神,每个程序媛心中也有自己的男神。其实我偷偷说一下,我心中还有一个女神就是 大 幂 幂!

近期热门:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值