win10+python3.6+百度AI——实现人脸识别
一、说明
近来半个月的时间沉迷于python不能自拔,不是初学,而是好久没有写程序了。在此记录pycharm建立Django项目基于百度AI实现的人脸检测。该项目参考了知乎的一篇文章,详情点击这里,原文是在Linux环境下搭建的,用了Anaconda作为python的解析器,个人对Anaconda不是很感兴趣,再有一点就是Anaconda下安装的一些库并不是最新的版本。本项目对原文项目有一些改动,但是大部分还是依照原文项目的架构和逻辑。
二、项目开始
2.1注册获得百度AI的接口
注册网址在这里,进入页面后点击控制台,选择人脸识别,需要百度账号登陆,有则登陆,无则注册
2.2创建应用
进入“人脸识别”后,点击“创建应用”按钮
进入创建页面后如图设置便可
填写好点击下面的“立即创建”,提示创建成功,点击“查看应用详情”
记下如图所示的三个参数,Secret Key可以点击显示查看
2.3安装所需的库
在CMD中使用pip安装即可,所需的库包含以下几个:
Django
requests(非必需)
simplejson
pillow
baidu-aip
三、程序编写
在处理好所需的基础条件后,进入程序的编写,因为是一个在线的人脸检测,所以需要一个WEB框架,在此使用的是Django
3.1pycharm新建Django项目
首先在pycharm中建立Django项目,关于建立pycharm如何建立Django项目,在此不再赘述,必要时可以搜索教程
建立好Django项目后,在项目的根目录有一个manage.py的文件,在CMD中使用命令python manage.py runserver 0.0.0.0:8000开启服务(此时不要关闭CMD,让其始终运行),打开浏览器,输入127.0.0.1:8000便可看到如图所示,说明成功
3.2创建(修改)重要的程序文件
此步骤为该项目的重要部分,在此过程中容易出错,需留意
recognition.py
view.html
settings.py
建立static文件夹以及其子文件夹images
1)手动在Django项目中建立recognition.py ,使其与pycharm自动生成的结构中的urls.py位于同一个文件夹下
2)手动在Django项目中建立view.html ,使其位于在templates 文件夹下,在pycharm建立Django时会自动生成 templates 文件夹,在此需要确定templates文件夹与 manage.py 在同一个目录中
3)在settings.py文件的最后一行添加
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static').replace('\\', '/'), )
4)为了让django框架知道这个模板文件的路径,需要修改settings.py 文件,将 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates",],如下所示:
4)建立文件夹static,并在其中建立子文件夹images,用以保存需要识别的人脸图片,确保static文件夹与templates文件夹是同级
3.3编辑view.html文件
在view.html文件中写入如下代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>人脸识别</title> </head> <body> <form action="/recognition" method="post" enctype="multipart/form-data">{% csrf_token %}<input type="file" name="Photo"><input type="submit" value="提交"> </form>{% if Photo %} <p><img src={{ Photo }} width="300"> {% if target_img %}<img src={{ target_img }} width="300">{% endif %} </p> <p>年龄:{{ age }}岁<p> <p>颜值:{{ beauty }}分<p> <p>性别:{{ gender }}{{ face_type }}<p> {% endif %} </body></html>
3.4编辑recognition.py文件
在recognition.py文件中写入如下代码。重要说明:在该程序中,所有的路径均为绝对路径,注意路径的斜杠方向,这也是windows与linux的重要区别。
from django.shortcuts import render from aip import AipFace import base64 import jsonfrom PIL import Image from PIL import ImageDraw#百度接口信息 APP_ID = '******' #在此填写之前百度页面上显示的AppID参数 API_KEY = '*****' #在此填写之前百度页面上显示的ApiKEY参数 SECRET_KEY = '******' #在此填写之前百度页面上现实的SecretyKEY参数 client = AipFace(APP_ID,API_KEY,SECRET_KEY) imageType = "BASE64"#定义参数变量 options = {} options["max_face_num"] = 1 options["face_field"] = "age,beauty,gender,landmark"def recognition_post(request):context ={} #此处将原文的content改为context,下同if request.POST:with open(".\\static\\images\\" +str(request.FILES['Photo']),"rb") as f: #所有路径均为绝对路径,下同base64_date = base64.b64encode(f.read())image = str(base64_date,encoding='utf-8');result = client.detect(image, imageType, options)context['Photo'] = "\\static\\iamges\\"+str(request.FILES['Photo']) #将百度接口返回的数据转成json对象json_str = json.dumps(result)#对数据进行解码json_data = json.loads(json_str)context['age'] = json_data['result']['face_list'][0]['age']context['beauty'] = json_data['result']['face_list'][0]['beauty']gender = json_data['result']['face_list'][0]['gender']['type']if gender == 'female':context['gender'] = "女性"else:context['gender'] = "男性"landmark72 = json_data['result']['face_list'][0]['landmark72']im1=Image.open(".\\static\\images\\"+str(request.FILES['Photo']))draw = ImageDraw.Draw(im1)for index in range(72):xy = landmark72[index]draw.text((xy['x'],xy['y']),"o",(255,255,0))draw = ImageDraw.Draw(im1)im1.save("static\\images\\target_img.jpg")context['target_img'] = "static\\images\\target_img.jpg"return render(request, "view.html", context)
四、测试程序
将上述程序编写完成之后,在pycharm中运行recognition.py,同时在浏览器中打开127.0.0.1:8000/recognition,便可进入如下界面:
点击选择文件,从之前建立的文件夹static\images中选择需要识别的人脸图片,点击提交,便可得到如下结果:
五、最后说明
1)鄙人不是python的大神,在很多方面还处于练习阶段,本篇文章写作仓促,如有依照本教程操作的过程中有什么问题,请先查看所需库的安装是否完整,如有问题可留言,看到回复
2)如最终结果所示,在识别图片的左边有一个图片无法显示,看过原文应该知道左边应该会显示原图,但是鄙人这边无法显示,换了浏览器(甚至用了IE)也不行,如果有大神知道原因,希望可以留言赐教
3)在此感谢参考文章及作者,如有侵权必删
4)此为鄙人项目中各个文件的位置(对应3.2步骤的说明):
5)最后吐槽一下搜索机制,即使在国内最大的搜索引擎中完全搜索参考文章的题目,也是无法搜索到的,呵呵哒
转载于:https://www.cnblogs.com/dmass36/p/10182183.html
win10+python3.6+百度AI——实现人脸识别相关推荐
- Python基于百度AI的人脸识别系统--颜值检测
基于百度AI的人脸识别系统–颜值检测 刚开始学,觉得好玩就写了这个 主要是分为人脸识别系统的对接,UI的设计 人脸识别系统: 用的百度的AI,其中的AK,SK可以换成自己的,在百度开放平台上注册就能获 ...
- Qt+百度AI实现人脸识别之人脸检测
文章目录 简单需求 Demo运行结果 百度AI人脸识别接入 为什么使用百度AI接口 接入步骤 如何获取Access Token Qt软件开发 人脸检测Qt编程步骤 知识点 网络编程 get.put.p ...
- python3调用百度API完成人脸识别,检测人种-年龄-性别-颜值-眼镜
https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 参考博客:https://blog.csdn.net/qq_38412868/artic ...
- java 正規表示 group_经验分享|Java+百度AI实现人脸识别
之前尝试用python+opencv实现过人脸识别,接下来我们使用Java+百度AI来实现人脸识别的尝试. I 注册百度开放平台账号 打开百度AI官方网站(https://ai.baidu.com/? ...
- 基于python3,百度AI实现人脸检测,人脸识别
我感觉百度是BAT三家里面AI能力最强的了,在图像和语音的处理上面是很强的,很全面.百度AI里面功能齐全,提供的语言也是很多.唯一不太好的是目前对python3不是很支持,还是支持python2.但也 ...
- SpringBoot集成百度AI实现人脸识别
文章目录 1. 百度AI开放平台 2. 文档集成 3. 代码实现 3.1 创建SpringBoot工程 3.2 添加百度AI依赖 3.3 创建AipFace 3.4 注册人脸接口 3.5 人脸登录接口 ...
- php调用人脸识别接口,PHP调用百度AI接口人脸识别-语音技术-文本识别-图像识别...
Rain-AI系统基于百度人工智能接口二次开发 有问题的可以加入这个群:226520254,大家一起交流 说明:这个代码是原生PHP开发的,在6个月前我为了效率和安全性能使用框架进行重写,测试站里的是 ...
- 百度ai 人脸识别 java_百度ai 接口 人脸识别
api文档 能力介绍 接口能力 人脸检测:检测图片中的人脸并标记出位置信息; 人脸关键点:展示人脸的核心关键点信息,及72个关键点信息. 人脸属性值:展示人脸属性信息,如年龄.性别等. 人脸质量信息: ...
- 百度AI进行人脸识别
获取token # encoding:utf-8 import requests # client_id 为官网获取的AK, client_secret 为官网获取的SK host = 'https: ...
最新文章
- linux应用程序接收文件,Linux应用程序学习之文件编程
- 数字孪生+交通,到底有啥用?
- 一题多解(三)—— Python 字符串的拼接
- 【cornerstone】撤销标注点位(通过ctrl+z)
- flask html缓存,flask_cache如何缓存动态数据,如何调用缓存数据
- [2005.04.24 20:47:26] 实践与思考之窥索[原创]
- mysql characterencoding 枚举值_MySQL 事务锁基础部分详解
- linux 服务状态命令,Linux 查看服务列表,查看服务状态
- 六祎-网易云视频下载
- 快门光圈感光度口诀_曝光补偿怎么调,快门光圈感光度口诀,深度解析曝光补偿...
- 电子银行卡的优势分析
- LocalDateTime查找最近的五分钟点
- 【yolov5 v6.0】中断以后重新训练,增加epochs,冻结层
- c# picturebox 刷新_C# picturebox画图问题
- CAD图纸比例设置不同时CAD标注样式设置为相同的操作教程
- python识别手写数字字体_基于tensorflow框架对手写字体MNIST数据集的识别
- android listview 切换,Android ListView切换按钮
- 如何用python实现题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
- laravel mysql exists_laravel exists怎么使用
- 【盘点】2022上半年十大网络安全事件