第三天,学习利用爬虫获取人脸数据,及数据分析数据可视化,通过百度人脸识别的数据分析得出统计图。

五、数据采集
六、人脸识别

Day3作业

整合前三天的代码功能,要求包括数据采集、数据分析、数据可视化,把运行结果截图到日报中,只允许同小组的同学截图相同 。

人脸识别代码

可以实现检测年龄、颜值、性别、是否带眼镜

from aip import AipFace
import base64""" 你的 APPID AK SK """
APP_ID = '26456423'
API_KEY = '9fYx8NCKyoZneZ3QfUSkCw1A'
SECRET_KEY = 'wLrN0SFtuvCUVYDZoD2qGa99kghi8RTt'def img2base64(path):"""把图片文件转换为基于base64的字符串,以便用于网络传播:param path: 图片的路径:return: 转换后的结果"""file = open(path, 'rb')  # 使用读取的方式去打开图片文件data = file.read()  # 读取文件信息base = base64.b64encode(data)  # base64编码base = base.decode('utf-8')  # 以utf-8的方式解码file.close()  # 关闭文件return base  # 返回数据def detect_face():"""人脸检测:return: 百度服务器返回的人脸检测数据"""client = AipFace(APP_ID, API_KEY, SECRET_KEY)#创建客户端options = {"face_field":"age,beauty,gender,glasses"}#参数年龄、颜值、性别、眼镜image = img2base64("000014.jpg")result = client.detect(image, "BASE64" ,options)print(result)age = result['result']['face_list'][0]['age']beauty = result['result']['face_list'][0]['beauty']gender = result['result']['face_list'][0]['gender']['type']glasses = result['result']['face_list'][0]['glasses']['type']print("年龄", age)print("颜值", beauty)print("性别", gender)print("眼镜", glasses)if __name__ == '__main__':detect_face()

使用方法

将下载的图片放到工程文件目录下,且此处代码改为图片后缀

数据采集、数据分析、数据可视化整合代码

from icrawler.builtin import BingImageCrawler
from aip import AipFace
import base64
import time  # 用于延迟操作
import os  # 用于文件操作
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType  # 导入主题# 颜值统计
count_class_1 = 0
count_class_2 = 0
count_class_3 = 0
count_class_4 = 0
count_class_5 = 0
count_class_6 = 0
count_class_7 = 0
count_class_8 = 0
count_class_9 = 0
count_class_10 = 0
count_class_error = 0def bing_image_crawler(keyword, max_num):"""基于bing搜索引擎爬取图片:param keyword: 关键字:param max_num: 数量"""bing_crawler = BingImageCrawler(feeder_threads=2,parser_threads=4,downloader_threads=8,storage={'root_dir': 'bing'})filters = dict(size='medium')bing_crawler.crawl(keyword=keyword,filters=filters,max_num=max_num)""" 你的 APPID AK SK """
APP_ID = '16966840'
API_KEY = 'B0e6QoxUB0gwQxxzWT6fCgMU'
SECRET_KEY = 'rGQji0R0X76e4CP9rbcdPbcNRdS6EwC9'def img2base64(path):"""把图片文件转换为基于base64的字符串,以便用于网络传播:param path: 图片的路径:return: 转换后的结果"""file = open(path, 'rb')data = file.read()base = base64.b64encode(data)base = base.decode('utf-8')file.close()return basedef detect_face(img_path):"""人脸检测:param img_path: 人脸检测的图片路径:return: 百度服务器返回的人脸检测数据"""client = AipFace(APP_ID, API_KEY, SECRET_KEY)options = {"face_field": "age,beauty"}image = img2base64(img_path)return client.detect(image, "BASE64", options)def parse_data(data):"""解析服务器返回的数据,并提取颜值分数,根据颜值分数进行等级划分:param data: 服务器返回的原始结果数据:return: 颜值等级"""# 颜值半秒,控制QPStime.sleep(0.5)if data['error_code'] != 0:print("识别有问题", data)# 计数+1global count_class_errorcount_class_error += 1return -1  # 访问有问题beauty = data['result']['face_list'][0]['beauty']if beauty >= 90:# 计数+1global count_class_10count_class_10 += 1return 10elif beauty >= 85:# 计数+1global count_class_9count_class_9 += 1return 9elif beauty >= 75:# 计数+1global count_class_8count_class_8 += 1return 8elif beauty >= 65:# 计数+1global count_class_7count_class_7 += 1return 7elif beauty >= 55:# 计数+1global count_class_6count_class_6 += 1return 6elif beauty >= 45:# 计数+1global count_class_5count_class_5 += 1return 5elif beauty >= 35:# 计数+1global count_class_4count_class_4 += 1return 4elif beauty >= 25:# 计数+1global count_class_3count_class_3 += 1return 3elif beauty >= 15:# 计数+1global count_class_2count_class_2 += 1return 2elif beauty >= 5:# 计数+1global count_class_1count_class_1 += 1return 1else:# 计数+1count_class_error += 1return -1  # 未知情况def classify():"""【了解】本地磁盘中对各种颜值等级的图片进行分类:return:无"""root_dir = 'bing'# 列举所有目录下的文件和文件夹file_list = os.listdir(root_dir)# 遍历所有文件和文件夹for i in range(0, len(file_list)):# 拼装出文件路径path = root_dir + '/' + file_list[i]# 如果是文件if os.path.isfile(path):# 人脸识别获得其颜值等级beauty = parse_data(detect_face(path))# 按照颜值来创建文件夹,拼接出文件夹的路径dic = root_dir + '/' + str(beauty) + '/'# 如果识别有问题if beauty == -1:dic = 'bing/未识别/'# 如果文件夹不存在,就新建一个if not os.path.exists(dic):os.makedirs(dic)# 移动图片到等级文件夹中# 参数1:源文件的路径# 参数2:新文件的路径os.rename(path, dic + file_list[i])def draw_chart():bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK))bar.add_xaxis(["未识别", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"])# 增加y轴bar.add_yaxis("", [count_class_error,count_class_1,count_class_2,count_class_3,count_class_4,count_class_5,count_class_6,count_class_7,count_class_8,count_class_9,count_class_10])bar.set_global_opts(title_opts=opts.TitleOpts(title="颜值统计图"))bar.render()if __name__ == '__main__':keyword = input("请输入要爬取的关键字:")max_num = input("请输入要爬取的数量:")max_num = int(max_num)# 爬取bing_image_crawler(keyword, max_num)print("人脸识别分类中......")# 分类(包括人脸识别和解析)classify()# 画图draw_chart()print("程序执行完成")

实现效果


爬取图片

**文件目录:**得到评分为8的图片

这是上次运行的结果得到新的结果得把文件目录的删掉。

实训日记三 人脸识别系统相关推荐

  1. 【项目实训】基于人脸识别的课堂签到管理系统(python+qt5+sqlite3+百度智能云)

    [项目实训]基于人脸识别的课堂签到管理系统(python+qt5+sqlite3+百度智能云) 一.环境介绍 二.签到功能 2.1 启动签到 2.2 结束签到 三.用户组操作 3.1 添加用户组 3. ...

  2. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  3. Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!

    Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...

  4. Python与人工智能入门实践——简易人脸识别系统

    Python与人工智能入门实践--简易人脸识别系统 写在前面: 笔者在寒假期间进行了一些简短的实训,主要内容包括简单的爬虫和简单的人脸识别算法,由于时间有限,对于python也是第一次详细学习,功能较 ...

  5. 【AI达人创造营第三期】从零教你搭建基础人脸识别系统

    基于凌蒙派RK3568部署人脸识别系统 一.项目背景 (一).AIStudio方案调研 AIStudio中搜了一圈,和人脸识别系统有关的项目大致有两个类型,典型代表如下: 项目一: 人脸识别(3):部 ...

  6. 人工智能人脸识别系统,人工智能应用人脸识别

    手机人脸识别的原理是什么? . 不同品牌机型采用的面部识别技术方案不同,面部识别效果也会不一样:目前vivo/iQOO系列手机,仅NEX双屏版采用3D人脸识别技术,其余机型均采用FaceWake面部识 ...

  7. 【EduCoder答案】人脸识别系统——OpenCV人脸检测

    简介 答案查询的入口网页版 其他各类实训答案的目录见这里 答案获取的方法简介见这里 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 人脸识别系统 -- OpenCV人脸检测 > ...

  8. 人物关系 人脸识别_原因解密:格里兹曼宣布终止与华为合作,不只是因为人脸识别系统...

    恐怕不少球迷在看到这篇文章之前,依旧不知道格里兹曼突然间宣布终止了与华为方面的代言合作,并且这突然违约的行为背后是什么原因也让人不得而知.真的是因为华为方面研发了一款特殊的人脸识别系统,还是受到舆论的 ...

  9. 如何快速搭建智能人脸识别系统

    作者 | 小白 来源 | 小白学视觉 网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一.这是为了确保我们的隐私得到维护,只 ...

最新文章

  1. 算法基础知识科普:8大搜索算法之顺序搜索
  2. android 定义date对象,如何从Date对象设置Android Chronometer基准时间?
  3. 杂记2017.10.16
  4. MATLAB功率谱函数psd与pwelch的使用
  5. python递归排序组合_如何用Python求list的排列组合:一种递归方式
  6. DAS、SAN和NAS三种服务器存储方式
  7. spark中local模式与cluster模式使用场景_不可不知的Spark调优点
  8. Spring Rdbms操作(二)——SqlFunction 获取表数据条数
  9. NLPCC 2021 Final Call For Papers
  10. 素数c语言,C语言素数怎么表示
  11. C++程序设计一、二(二元一次方程与函数、函数指针)
  12. SQl触发器 声明变量。
  13. python工程师简历项目经验怎么写_班长项目经验简历范文
  14. Codeforces 1102F Elongated Matrix 状压dp
  15. 前端培训课随感,传智、千锋、尚硅谷、渡一
  16. 计算机硬盘容量单位换算,为什么新硬盘容量不对是什么原因?原来是硬盘容量单位换算的问题...
  17. 获取文件夹下的文件,包含子文件夹并复制文件
  18. Hadoop之Lzo压缩配置
  19. 转载——背包九讲(原文链接已不可考)
  20. 基于python的学生信息管理系统文献综述_学生信息管理系统的文献综述

热门文章

  1. C#之父牛逼还是Java之父牛逼?
  2. 报错:Use /* eslint-disable */ to ignore all warnings in a file.
  3. 如何读懂一篇学术论文?
  4. 1循环结构程序设计-第5关:C循环-寻找完数
  5. 程序员上了年纪可以做啥?
  6. Orbslam2 稠密点云 +D435i实现(Ubuntu18.04)
  7. 5年1万亿:揭秘中行供应链金融关键词
  8. 四川师范大学区域规划(3-区域发展的经济社会背景分析)90分以上版本
  9. iec61508最新2020_IEC61508标准解读
  10. 沙雕加速的使用方法和最新官网