携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 707 篇原创博客
给美女打分,好需求,这个需求听到就想把它快速的实现,对于这样的需求,梦想橡皮擦一直是来者不拒的。
写在前面
本案例实现基本思路:
- 获取页面上所有人物头像的缩略图(采集图片过程,可参考 codechina 源码或过往案例)
- 调用人脸打分API,为图片打分
- 将得分最高的图片打开,欣赏
编码时间
关于人脸打分检测,调用的是百度的API,具体网址如下:
console.bce.baidu.com/ai/?_=16024…
使用百度账号登录之后,创建应用即可获取所需参数。
API的使用方法和下载。
下载地址:ai.baidu.com/docs#/Face-…
使用说明:ai.baidu.com/ai-doc/FACE…
保存图片代码如下,在保存的过程中需要对图片进行打分,当然你直接下载全部图片,在对本地图片打分也可
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秒。 代码编写完毕 ,运行效果如图,在代码中加入了一些判断,打分之后会写入到文件名中,这样我们就能发现最高分了。
通过批量调用手中的人脸照片进行打分,高分头像可以用作表情包。这里面混入了一些男人
最神奇的是接口判断下面是非人类....这就比较神奇了。代码难度不大,查看置顶评论即可。