【月更29】照片,人脸打分与Python之间的拟合度

举报
梦想橡皮擦 发表于 2022/03/31 22:13:42 2022/03/31
【摘要】 给美女打分,好需求,这个需求听到就想把它快速的实现,对于这样的需求,梦想橡皮擦一直是来者不拒的。该案例因为版权问题,无法完整展示,注意看评论区 写在前面本案例实现基本思路:获取页面上所有人物头像的缩略图(采集图片过程,可参考 codechina 源码或过往案例)调用人脸打分 API,为图片打分将得分最高的图片打开,欣赏 编码时间关于人脸打分检测,调用的是百度的 API,具体网址如下:http...

给美女打分,好需求,这个需求听到就想把它快速的实现,对于这样的需求,梦想橡皮擦一直是来者不拒的。
该案例因为版权问题,无法完整展示,注意看评论区

写在前面

本案例实现基本思路:

  1. 获取页面上所有人物头像的缩略图(采集图片过程,可参考 codechina 源码或过往案例)
  2. 调用人脸打分 API,为图片打分
  3. 将得分最高的图片打开,欣赏

编码时间

关于人脸打分检测,调用的是百度的 API,具体网址如下:

https://console.bce.baidu.com/ai/?_=1602467530258&fromai=1#/ai/face/overview/index

使用百度账号登录之后,创建应用即可获取所需参数。

API 的使用方法和下载。
下载地址:http://ai.baidu.com/docs#/Face-Python-SDK/top
使用说明:http://ai.baidu.com/ai-doc/FACE/ek37c1qiz

保存图片代码如下,在保存的过程中需要对图片进行打分,当然你直接下载全部图片,在对本地图片打分也可

import time
import requests
from fake_useragent import UserAgent
from aip import AipFace
import base64
import json
user_agent = UserAgent()
headers = {
    "user-agent": user_agent.random,
    "referer": "https://www.pingbi.com",
    "x-requested-with": "XMLHttpRequest",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8"
}


def beauty(base64_data):
	""" 你的 APPID AK SK """
	APP_ID = '你的 App ID'
	API_KEY = '你的 Api Key'
	SECRET_KEY = '你的 Secret Key'

client = AipFace(APP_ID, API_KEY, SECRET_KEY)

    client = AipFace(APP_ID, API_KEY, SECRET_KEY)

    # image = "https://rpic.pingbiucdn.cn/live-cover/appCovers/2020/08/27/6796447_20200827022844_big.jpg/dy2"
    image = base64_data

    imageType = "BASE64"

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

    """ 如果有可选参数 """
    options = {}
    options["face_field"] = "age,beauty,gender"
    options["max_face_num"] = 2
    options["face_type"] = "LIVE"
    options["liveness_control"] = "LOW"

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


def save_imgs(rl):

    for user in rl:
        # https://www.pingbi.com/9190725
        rid = user["rid"]
        face = user["rs1"]
        try:
            print("访问接口等待中")
            time.sleep(2)
            res = requests.get(face, headers=headers)
            img = res.content

            base64_data = str(base64.b64encode(img), encoding='utf-8')
            bea = beauty(base64_data)

            if bea["error_code"] == 222202:
                print("非人类!")
                with open(f"./faces/非人:{rid}.jpg", "wb") as file:
                    file.write(img)
            else:
                # 获取得分
                print(bea)
                beauty_count = bea["result"]["face_list"][0]["beauty"]

                with open(f"./faces/{beauty_count}{rid}.jpg", "wb") as file:
                    file.write(img)

        except Exception as e:
            print(e)

上述代码中有个接口访问限制时间,该时间是百度 API 调用的限制时间,建议设置为 1~2 秒。
代码编写完毕 ,运行效果如图,在代码中加入了一些判断,打分之后会写入到文件名中,这样我们就能发现最高分了。

通过批量调用手中的人脸照片进行打分,高分头像可以用作表情包。这里面混入了一些男人

最神奇的是接口判断下面是非人类…这就比较神奇了。代码难度不大,查看置顶评论即可。

广宣时间

博主 ID:梦想橡皮擦,希望大家点赞、评论、收藏。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。