¿No se ve tan bien como un oso? Use Python para hacer una detección de valor nominal, el resultado está fuera del gran espectro

Listo para trabajar

Antes de escribir el código, debe solicitar permiso en la plataforma de desarrollo de Baidu. Los pasos son los siguientes:

Iniciar sesión en Baidu Smart Cloud

  • https://cloud.baidu.com/?from=console, registre uno sin una cuenta de Baidu
  • La primera vez que ingrese, habrá una página de este tipo, puede completarla a voluntad.

Ingrese a la consola a través de la esquina superior derecha de la interfaz

Después de ingresar a la consola, haga clic en la barra de menú en la esquina superior izquierda

Seleccionar producto servicio

Haga clic para crear la aplicación

  • Complete el nombre de la aplicación
  • Valor predeterminado de selección de interfaz
  • Solicitud de atribución seleccionar individuo
  • Complete la descripción de la aplicación
  • Luego haga clic en Crear ahora

Después de crear, haga clic para volver a la lista de aplicaciones

Haga clic para obtener recursos gratuitos

Después de la autenticación de nombre real, puede recibir todo el contenido en el tipo de servicio

La autenticación del nombre real lleva tiempo

Volver a la lista de aplicaciones después de recibir


Copie el contenido de la clave API y la clave secreta para una posterior autenticación de la interfaz

Primero vaya y pida algunas fotos hermosas y regrese para hacer una detección del valor nominal

entorno de desarrollo

  • Pitón 3.8
  • Pycharm 2021.2
  • Utilizará la interfaz API interfaz de nube de Baidu

uso del módulo

  • solicitudes >>> solicitudes de instalación de pip
  • tqdm >>> pip instalar tqdm
  • usted
  • base64

La primera etapa es recopilar los datos de la foto de anclaje.

solicitar datos

url = f'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&page=1'
# headers 请求头 伪装Python的代码 不被识别出来是爬虫程序...
# headers 是一个字典数据类型
headers = {
    
    
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}
# 通过requests模块去对url地址发送请求
response = requests.get(url=url, headers=headers)

Analice los datos, extraiga el contenido de datos que queremos, el nombre del ancla, la dirección URL de la imagen de portada del ancla

# json数据提取内容 根据冒号左边的内容 提取冒号右边内容
data_list = response.json()['data']['datas']
for index in data_list:
    # pprint.pprint(index)
    name = index['nick']
    img_url = index['screenshot']

pasar páginas

for page in range(1, 11):
    url = f'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&page={
      
      page}'

Guardar contenido de datos de imagen

img_content = requests.get(url=img_url, headers=headers).content
# 'img\\' 文件路径 name 文件名字 '.jpg' 文件后缀 >>> 文件名
# mode 保存方式 wb 二进制模式写入
# as 重命名 为 f
filename = 'img_1\\'
if not os.path.exists(filename):
    os.mkdir(filename)

with open(filename + name + '.jpg', mode='wb') as f:
    f.write(img_content) # 写入数据
    print('正在保存: ', name)

Detección de valor de color

Llame a la interfaz para identificación

def get_beauty(img_base64):
    host = 'https://aip.baidubce.com/oauth/2.0/token'
    data = {
    
    
        'grant_type': 'client_credentials',
        'client_id': 'vXONiwhiVGlBaI2nRRIYLgz5',
        'client_secret': 'ouZMTMuCGLi7pbeg734ftNxn9h3qN7R4'
    }
    response = requests.get(url=host, params=data)
    token = response.json()['access_token']
    # print(token)
    '''
    人脸检测与属性分析
    '''
    request_url = f"https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token={
      
      token}"
    params = {
    
    
        "image": img_base64,  # 需要传递 图片 base64
        "image_type": "BASE64",
        "face_field": "beauty"
    }
    headers = {
    
    'content-type': 'application/json'}
    response = requests.post(request_url, data=params, headers=headers)
    try:
        beauty = response.json()['result']['face_list'][0]['beauty']
        return beauty
    except:
        return '识别失败'

Obtener todas las imágenes, clasificar

lis = []
files = os.listdir('img_1\\')
print('正在识别人脸, 颜值检测中, 请稍后.....')
for file in tqdm(files):
    img_file = 'img_1\\' + file
    img_name = file.split('.')[0]
    # print(img_file)
    f = open(img_file, mode='rb')  # 读取一张图片内容
    img_base64 = base64.b64encode(f.read())
    beauty = get_beauty(img_base64)
    if beauty != '识别失败':
        dit = {
    
    
            '主播': img_name,
            '颜值': beauty,
        }
        lis.append(dit) # 把字典添加到空列表里面
    # print(f'{img_name}颜值评分是{beauty}')


lis.sort(key=lambda x:x['颜值'], reverse=True)
num = 1
# 前10张照片的颜值排名
for index in lis:
    print(f'颜值排名第{
      
      num}的是{
      
      index["主播"]}, 颜值评分是{
      
      index["颜值"]}')
    num += 1



Consulta la clasificación

Top tres

imagen.png

emmm

Sin embargo, miro los últimos tres


No estoy convencido, ¿el último lugar en realidad lo perdieron un oso y un hombre, y solo obtuvieron 22 puntos?

Después de leer el documento oficial, el último lugar puede ser porque la mano está bloqueando la cara, pero fue derrotado por un oso, lo cual es indignante.

Supongo que te gusta

Origin blog.csdn.net/m0_48405781/article/details/122350658
Recomendado
Clasificación