Python实现人脸识别检测,对主播进行颜值排行

前言

嗨嗨,我亲爱的家人们

今天来整点不一样的,嘿嘿

用Python简单实现对人脸识别的检测,对某平台主播照片进行评分排名

应该对女主播这个词不陌生吧,怎么说应该还是蛮多人看过一些女主播吧

我无聊的时候也会看看,只不过我看的都是搞笑女主播哈哈

在这里插入图片描述

模块使用:

第三方模块

  • requests >>> pip install requests
  • tqdm >>> pip install tqdm 简单实现进度条效果

自带模块

  • os
  • base64

请添加图片描述

采集代码

导入模块

源码.点击领取即可

# 数据请求模块 --> 第三方模块 需要安装 pip install requests
import requests
import base64
from pprint import pprint
import os
from tqdm import tqdm

1. 发送请求, 模拟浏览器对url地址发送请求

模拟浏览器: 请求头 headers

字典数据类型, 一定要构建完成键值对

多页数据采集 --> 分析请求url 请求参数变化规律

for page in range(1, 13):
    print(f'==================正在采集第{page}页的数据内容==================')
    # 请求url地址 <复制>
    url = f'https://www.网站.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&page={page}'
    # 模拟伪装 <复制>
    headers = {
        # User-Agent 用户代理 表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }

发送请求

调用requests模块里面get请求方法对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量response接收返回数据

response = requests.get(url=url, headers=headers)
# <Response [200]> 响应对象, 表示请求成功
print(response)

2. 获取数据, 获取服务器返回响应数据

开发者工具 --> response

response.json() 获取响应json字典数据, 返回的数据必须是完整json数据格式

当你遇到 simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

解决方法:

先获取文本数据 response.text

目的看一下我返回数据是什么样子的 <得到数据了呢, 还是得到数据有问题呢>

当你看到返回的数据 getLiveListJsonpCallback(里面字典样子花括号)

把链接里面 Callback参数删掉
3. 解析数据, 提取我们想要的数据内容

  • 主播名字
  • 主播照片url

response.json() --> 字典数据类型

根据键值对取值: 根据冒号左边的内容[键], 提取冒号右边的内容[值]

# for循环遍历, 把列表里面元素一个一个提取出来
for index in response.json()['data']['datas']:
    # 提取主播名字
    name = index['nick']
    # 提取照片
    img_url = index['screenshot']

4. 保存数据, 把图片保存本地文件夹

发送请求 img_url , 获取数据 获取二进制数据

response.content 获取响应二进制数据

图片/音频/视频/特定格式文件 —> 获取二进制数据进行保存

只要可以得到数据, 实现效果, 过程不重要

D:\自游\颜值检测\img\

\ 转义字符 把含有特殊含义字符, 转义成除了字符本身以外, 不含有任何意义

        img_content = requests.get(url=img_url, headers=headers).content
        # 'img\\'<文件夹> + name<文件名> + '.jpg'<文件后缀>  wb 保存方式, 二进制保存
        with open('img\\' + name + '.jpg', mode='wb') as f:
            f.write(img_content)
        print(name, img_url)

效果展示

请添加图片描述

检测代码

python学习交流Q群:770699889 ### 源码领取
# 数据请求模块 --> 第三方模块 需要安装 pip install requests
import requests
import base64
from pprint import pprint
import os
from tqdm import tqdm
def beauty(img):
    '''
    现成复制的
    获取 access_token 值
    '''
    try:
        # client_id 为官网获取的AK, client_secret 为官网获取的SK
        host = ''

        response = requests.get(host)
        access_token = response.json()['access_token']
        '''
        人脸检测与属性分析
        '''
        # 读取文件内容 照片内容
        f = open(f'img\\{img}', mode='rb')
        # 读取出来文件 转成 base64 编码格式
        img_base64 = base64.b64encode(f.read())
        """
        现成API调用代码
        """
        request_url = ""
        params = {
            "image": img_base64,  # 需要传递 图片 base64
            "image_type": "BASE64",
            "face_field": "beauty"
        }
        request_url = request_url + "?access_token=" + access_token
        headers = {'content-type': 'application/json'}

        response = requests.post(request_url, data=params, headers=headers)
        beauty = response.json()['result']['face_list'][0]['beauty']
        return beauty
    except:
        return '识别失败'


# 读取文件内容 或者 文件名字
lis = []
files = os.listdir('img\\')
print('正在进行颜值检测, 稍后.......')
for file in tqdm(files[100:200]):
    num = beauty(file)
    if num != '识别失败':
        title = file.split('.')[0]
        dit = {
            '主播': title,
            '颜值': num
        }
        lis.append(dit)

lis.sort(key=lambda x:x['颜值'], reverse=True)

i = 1
for li in lis:
    print(f'颜值排名第{i}的是{li["主播"]}, 颜值评分是{li["颜值"]}')
    i += 1

颜值检测效果

请添加图片描述

排名展示

我觉得这个排名有点迷糊

第一并不是最好看的,我觉得后面的好看些

随便挑几张给你们看看吧

请添加图片描述

请添加图片描述

请添加图片描述

最后

今天的分享到这里就结束了

给大家推荐一些Python视频教程,希望对大家有所帮助:

Python零基础教学合集

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值