IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> ?几行代码测出你的颜值有度高!!!? -> 正文阅读

[Python知识库]?几行代码测出你的颜值有度高!!!?


完成目标:
??利用百度AI接口,对照片进行颜值评分。


一、前言

??想必很多人都对自己的颜值到底怎样充满好奇,也有很多软件为大家提供了颜值打分的趣味功能。今天就利用百度的平台对人脸进行颜值检测,其平台已经准确识别多种人脸属性信息,包括年龄、性别、颜值、表情、情绪、口罩、脸型、头部姿态、是否闭眼、是否配戴眼镜、人脸质量信息及类型等

二、环境准备

编辑器:pycharm

用到的库:os、AipFace、base64

三、具体实现

1、安装百度AI的库

??安装使用Python SDK有如下方式:【官方文档】

如果已安装pip,执行pip install baidu-aip即可。
如果已安装setuptools,执行python setup.py install即可。

2、新建AipFace

??AipFace是人脸识别的Python SDK客户端,为使用人脸识别的开发人员提供了一系列的交互方法。
??参考如下代码新建一个AipFace:

from aip import AipFace

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipFace(APP_ID, API_KEY, SECRET_KEY)

在上面代码中,常量APP_ID在百度云控制台中创建,常量API_KEY与SECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

3、接口说明

image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"

imageType = "BASE64"
# image_type:
# 图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
# URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
# FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个

""" 调用人脸检测 """
client.detect(image, imageType);

""" 如果有可选参数 """
options = {}
options["face_field"] = "age"
#face_field 
#包括 age,beauty,expression,face_shape,gender,glasses,landmark,landmark72,landmark150,quality,eye_status,emotion,face_type信息逗号分隔. 
# 默认只返回face_token、人脸框、概率和旋转角度
options["max_face_num"] = 2
options["face_type"] = "LIVE"

options["liveness_control"] = "LOW"

""" 带参数调用人脸检测 """
client.detect(image, imageType, options)

4、返回数据

?? 返回的是json数据,我们主要需要的是beauty这个值


{
  "face_num": 1,
  "face_list": [
        {
            "face_token": "35235asfas21421fakghktyfdgh68bio",
            "location": {
                "left": 117,
                "top": 131,
                "width": 172,
                "height": 170,
                "rotation": 4
            },
            "face_probability": 1,
            "angle" :{
                 "yaw" : -0.34859421849251
                 "pitch" 1.9135693311691
                 "roll" :2.3033397197723
            }
            "landmark": [
                {
                    "x": 161.74819946289,
                    "y": 163.30244445801
                },
                ...
            ],
            "landmark72": [
                {
                    "x": 115.86531066895,
                    "y": 170.0546875
                }...
            ],
            "age": 29.298097610474,
            "beauty": 55.128883361816,
            "expression": {
                "type": "smile",
                "probability" : 0.5543018579483
            },
            "gender": {
                "type": "male",
                "probability": 0.99979132413864
            },
            "glasses": {
          "type": "sun",
                "probability": 0.99999964237213
            },
            "face_shape": {
                "type": "triangle",
                "probability": 0.5543018579483
            }
            "quality": {
                "occlusion": {
                    "left_eye": 0,
                    "right_eye": 0,
                    "nose": 0,
                    "mouth": 0,
                    "left_cheek": 0.0064102564938366,
                    "right_cheek": 0.0057411273010075,
                    "chin": 0
                },
                "blur": 1.1886881756684e-10,
                "illumination": 141,
                "completeness": 1
            }
        }
    ]
}

5、定义函数

??定义函数获取beauty,传入参数是文件名字

def get_score(file_name):
    APP_ID = '24792216'
    API_KEY = 'r5dKhE5Yloc74x3mxrhaXdpP'
    SECRET_KEY = 'CMPnLas3QvkU2u64W3ItG9dtWchBZXSs'

    client = AipFace(APP_ID, API_KEY, SECRET_KEY)
	
	#以为base64读取图片
    with open("img/" + file_name, mode="rb")as fp:
        data = base64.b64encode(fp.read())

    imageType = "BASE64"
    image = data.decode()

    options = {
        "face_field": "beauty"
    }
    result = client.detect(image, imageType, options)
    beauty_score = result['result']['face_list'][0]['beauty']
    return beauty_score # 返回beauty的值

6、图片爬取函数

def save_pic():
    url = 'https://www.huya.com/g/4079'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safar"
    }
    tree = etree.HTML(requests.get(url=url, headers=headers).text)
    img_list = tree.xpath('//li[@class="game-live-item"]/a/img/@data-original')
    name_list = tree.xpath('//li[@class="game-live-item"]//span[@class="avatar fl"]/i/text()')
    for img, name in zip(img_list, name_list):
        with open("img/" + name + ".jpg", mode="wb")as fp:
            fp.write(requests.get(url=img, headers=headers).content)

7、主函数

if __name__ == '__main__':
	save_pic()
	
    path = "./img"
    file_name_list = os.listdir(path) # 读取文件夹下文件

    info_list = [] # 存储所有图片信息
    for file_name in file_name_list:
        info = {}
        try:
            beauty_score = get_score(file_name)
            info["name"] = file_name[:-4]
            info["beauty"] = beauty_score
            info_list.append(info)
        except Exception as e:
            info["name"] = file_name[:-4]
            info["beauty"] = 0
            info_list.append(info)

8、成果

??读取了20个虎牙主播的封面图片,对其进行颜值打分,通过结果可以看出来这个案例是成功的。
??其中图片脸部漏出来的大小也会影响评分数,对于有的0分,打开图片观察是因为脸部遮挡,没有完整的识别出来人脸,百度这一方面做的特别好!
在这里插入图片描述

四、最后

??最后放上评分最高的主播照片~~~~

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:06:03  更:2021-09-06 11:06:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:40:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码