有没有Python的手机人脸识别解锁软件的demo?

基于python的人脸识别怎么做啊大神们? 检测人脸和识别性别_python吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:194,729贴子:
基于python的人脸识别怎么做啊大神们? 检测人脸和识别性收藏
基于python的人脸识别怎么做啊大神们? 检测人脸和识别性别
51CTO学院12年行业品牌,1600万用户选择,中国专业IT技能学习平台.python资深大牛授课,0基础从入门到精通,python报名与培训中心.
性别鉴别,有无更具体点的任务书的呢
python的人脸识别,会
登录百度帐号有没有人脸识别接口或者代码
[问题点数:100分,结帖人happy4944]
本版专家分:339
结帖率 98.68%
CSDN今日推荐
本版专家分:339
本版专家分:339
本版专家分:339
本版专家分:339
本版专家分:339
本版专家分:339
本版专家分:339
本版专家分:339
本版专家分:339
匿名用户不能发表回复!
其他相关推荐25行Python代码完成人脸识别
25行Python代码完成人脸识别
Python部落(www.freelycode.com)组织翻译, 禁止转载以下是Shantnu Tiwari的客座文章,作者有着在底层编程和嵌入式领域十年的工作经验。在发现Python语言之前的几年时间里,Shantnu Tiwari一直忍受着C/C++语言编程的不便,但Python使作者感到耳目一新。现在作者开始展现其对Python语言编程的热爱。在本文中我们将向您介绍一个异常简单的使用Python语言和开源库OpenCV的人脸识别方法,供此开启人脸识别之旅。在回复区提出任何问题之前:1. 不要略过文章而直接去尝试运行程序代码。你不仅需要调通代码,还需要在理解代码功能的基础上对代码进行故障排解。2. 确保你使用的是OpenCV V2版本。3. 为了保证脚本进行正常,你需要配备一个功能正常的网络摄像头。4. 首先浏览一下其他人的点评和问题,因为有可能你的问题别人已经提出过。多谢。OpenCVOpenCV介绍OpenCV是计算机视觉领域最受欢迎的库。OpenCV最早是使用C/C++语言进行编写的,现已支持Python语言捆绑使用。OpenCV使用机械学习算法对图像中的人脸进行搜索。由于有着与人脸一样复杂的原因,不存在一项简便的测试可以告知人们是否能够识别出人脸。相反,算法需要对成千上万细小的模式和特征进行匹配。面部识别算法被分解成成千上万很小的、易理解的任务,每一个任务较易实现。这些任务被称为分类器。像人脸一样,你可能有6,000个基于更多的分类器在进行人脸检测过程中,每一个分类器都需要进行匹配(当然要在一定的误差范围内)。但这其中就有问题了。在人脸识别过程中,算法从图片的左上角开始向右下角按小块逐步进行匹配,对每一个小块的识别过程中,算法都会持续的问:“这是人脸么?这是人脸么?这是人脸么?”由于在每个小块有着6000甚至更多的匹配项需要进行匹配,你可能会有无数的计算要执行,这些计算将引发你的电脑发生死机。为解决这个问题,OpenCV使用了级联技术。那什么是级联?最适当的答案就在字典中。级联就是一个瀑布或者一系列的瀑布。像一系列的瀑布过程一样,OpenCV级联将人脸检测过程拆分成了多个过程。在每一个图像小块中只进行一次粗略的测试。如果测试通过,接下来进行更详细的细节测试,依次重复。检测算法中有30至50个这种过程或者级联,只有在所有过程成功后才会最终识别到人脸。这样做的好处是在最初的几个过程中大多数的图片将会因不满足测试而被过略掉,算法可以无需浪费时间对每一张图像的6,000个属性进行检验。人脸识别算法运行耗时由数小时级降至实时级。级联实现理论听起来非常复杂,但实现起来去非常简单。级联其实就是一组包含了OpenCV用于进行目标识别的数据组成的XML文件。只需使用你想用的级联对你的代码进行初始化操作,其余过程由级联替你完成。鉴于人脸识别是如此的普适,OpenCV包含了大量的用于人脸识别、眼部识别、手部及腿部识别的内置级联。甚至还包含了对非人物对象识别使用的级联工具。例如,你是一个香蕉店的老板,OpenCV就有一个对消费者偷香蕉的行为追踪的级联。OpenCV安装 首先需要找到适合你电脑的安装文件。我发现安装OpenCV才是整个过程中最难的部分。如果你最到了奇怪的无法解释的报错,有可能是因为库冲突,32位和64位差异等。我总结的最简单方法是安装一台Linux虚拟机然后从头开始安装。一旦安装完成,开启一个Python会话,然后输入以下代码对安装是否正常进行确认:$ python&&& import cv2&&&如果没有任何报错,可以继续以下步骤。理解代码让我们开始分解真实的代码,可以从repo网站下载。需下载脚本face_detect.py,图片abba.png和XML文件haar_cascade_frontalface_default.xml三个文件。# Get user supplied valuesimagePath = sys.argv[1]cascPath = sys.argv[2]首先将相片和级联名称传递给命令行的参数。我们将会使用Abba相片和由OpenCV提供的进行人脸检测的默认级联。# Create the haar 级联facecascade = cv2.cascadeClassifier(cascPath)现在我们创建了级联,并用我们的人脸级联初始化了它。这样就把该级联载入内存并且可以使用了。记住,级联就是一个包含了用于人脸检测的数据的XML文件。# Read the imageimage = cv2.imread(imagePath)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)下面是读取图片并进行灰度转换。在进行灰度转换过程中已经完成了OpenCV的多个操作步骤。# Detect faces in the imagefaces = facecascade.detectMultiScale( & &gray, & &scaleFactor=1.1, & &minNeighbors=5, & &minSize=(30, 30), & &flags = cv2.cv.CV_HAAR_SCALE_IMAGE)这个函数检测实际的人脸,因此是关键代码,所以我们仔细检查一下选项。1. detectMultiScale function是一个检测对象的通用函数。由于我们调用它检测人脸,所以它就将检测人脸。第一个选项是图片灰度转换的相片。2. 第二个选项是scaleFactor。由于可能存在部分人脸距离相机相对较近,从而与较远处的人脸相比,尺寸较大。比例因子可以进行抵消补偿。3. 检测算法使用了一个活动窗口进行目标检测。minNeighbors选项定义了在其声明人脸被找到前,当前对象附件的目标数量。同时,minSize选项给出了每个窗口的大小。在这些方面我采用了常用值。在实际中你可以对窗口尺寸、补偿系数等进行调试直到找到最适合的值。函数的返回值是一组四边型,四边型内是算法检测到的人脸。下一步,我们将对函数的这些返回值进行循环。print &Found {0} faces!&.format(len(faces))# Draw a rectangle around the facesfor (x, y, w, h) in faces: & &cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)这个函数返回4个值:四边型的X轴、Y轴位置,四边型的宽度W和高度H。使用以上4个值调用内置函数rectangle()画出一个四边型。cv2.imshow(&Faces found& ,image)cv2.waitKey(0)最后,展示这个图片给用户,并等待用户的一个键盘输入。结果检查让我们再对Abba图片进行一次测试。$ python face_detect.py abba.png haar级联_frontalface_default.xml这个工作正常,其他图片检测结果如何?那个…不是人脸。让我们再试一次。我修改了参数设置,发现将scaleFactor设置成1.2可以将识别错识的人脸过滤掉。发生了什么?好吧,第一张相片使用了一个高相素相机在较近的距离进行拍摄。第二张相片貌似是使用的手机在较远距离进行的拍摄。这就是参数scaleFactor需要修改的原因。就像我说过的,你需要根据不同测试案例对算法进行不同的参数设置从而避免误识别的发生。需要注意的是,由于采用了基于机械学习的算法,检测结果永远无法达到100%精确。大多数案例中你都能得到较好的结果,但偶尔算法也会检测到错误的对象,就像检测到错误的人脸一样。代码在这里。使用网络摄像头如果你想便用摄像头怎么办?OpenCV从摄像头按帧抓取图片后你就可以按帧进行人脸检测了。你需要一台高性能计算机,虽然我已用了五年的笔记本可以应付这项工作,但我也只是偶尔才测试一次。下一篇文章:下一篇使用Python和网络摄像头的人脸检测已经上线,欢迎点击。想了解更多?在我的新书Python for Science and Engineering中我将继续关注这一话题,目前该书请参考Kickstarter。对于那些对于机器学习领域的人来说,我还会同时关注机器学习领域。英文原文: https://realpython.com/blog/python/face-recognition-with-python/译者: I-PythonPython 40行代码实现人脸识别功能
&更新时间:日 17:46:45 & 作者:冰不语
很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了。其实如果你不是非要深究其中的原理,只是要实现这一工作的话,人脸识别也没那么难。今天我们就来看看如何在40行代码以内简单地实现人脸识别。
很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了。这些人里包括曾经的我自己。其实如果如果你不是非要深究其中的原理,只是要实现这一工作的话,人脸识别也没那么难。今天我们就来看看如何在40行代码以内简单地实现人脸识别。
对于大部分人来说,区分人脸检测和人脸识别完全不是问题。但是网上有很多教程有无无意地把人脸检测说成是人脸识别,误导群众,造成一些人认为二者是相同的。其实,人脸检测解决的问题是确定一张图上有木有人脸,而人脸识别解决的问题是这个脸是谁的。可以说人脸检测是是人识别的前期工作。今天我们要做的是人脸识别。
Anaconda 2——Python 2
scikit-image
对于今天要用到的主要工具,还是有必要多说几句的。Dlib是基于现代C++的一个跨平台通用的框架,作者非常勤奋,一直在保持更新。Dlib内容涵盖机器学习、图像处理、数值算法、数据压缩等等,涉猎甚广。更重要的是,Dlib的文档非常完善,例子非常丰富。就像很多库一样,Dlib也提供了Python的接口,安装非常简单,用pip只需要一句即可:
pip install dlib
上面需要用到的scikit-image同样只是需要这么一句:
pip install scikit-image
注:如果用pip install dlib安装失败的话,那安装起来就比较麻烦了。错误提示很详细,按照错误提示一步步走就行了。
之所以用Dlib来实现人脸识别,是因为它已经替我们做好了绝大部分的工作,我们只需要去调用就行了。Dlib里面有人脸检测器,有训练好的人脸关键点检测器,也有训练好的人脸识别模型。今天我们主要目的是实现,而不是深究原理。感兴趣的同学可以到官网查看源码以及实现的参考文献。今天的例子既然代码不超过40行,其实是没啥难度的。有难度的东西都在源码和论文里。
首先先通过文件树看一下今天需要用到的东西:
准备了六个候选人的图片放在candidate-faces文件夹中,然后需要识别的人脸图片test.jpg。我们的工作就是要检测到test.jpg中的人脸,然后判断她到底是候选人中的谁。另外的girl-face-rec.py是我们的python脚本。shape_predictor_68_face_landmarks.dat是已经训练好的人脸关键点检测器。dlib_face_recognition_resnet_model_v1.dat是训练好的ResNet人脸识别模型。ResNet是何凯明在微软的时候提出的深度残差网络,获得了 ImageNet 2015 冠军,通过让网络对残差进行学习,在深度和精度上做到了比
CNN 更加强大。
1. 前期准备
shape_predictor_68_face_landmarks.dat和dlib_face_recognition_resnet_model_v1.dat都可以在这里找到。不能点击超链接的可以直接输入以下网址:。
然后准备几个人的人脸图片作为候选人脸,最好是正脸。放到candidate-faces文件夹中。
本文这里准备的是六张图片,如下:
她们分别是
然后准备四张需要识别的人脸图像,其实一张就够了,这里只是要看看不同的情况:
可以看到前两张和候选文件中的本人看起来还是差别不小的,第三张是候选人中的原图,第四张图片微微侧脸,而且右侧有阴影。
2.识别流程
数据准备完毕,接下来就是代码了。识别的大致流程是这样的:
先对候选人进行人脸检测、关键点提取、描述子生成后,把候选人描述子保存起来。
然后对测试人脸进行人脸检测、关键点提取、描述子生成。
最后求测试图像人脸描述子和候选人脸描述子之间的欧氏距离,距离最小者判定为同一个人。
代码不做过多解释,因为已经注释的非常完善了。以下是girl-face-rec.py
# -*- coding: UTF-8 -*-
import sys,os,dlib,glob,numpy
from skimage import io
if len(sys.argv) != 5:
print "请检查参数是否正确"
# 1.人脸关键点检测器
predictor_path = sys.argv[1]
# 2.人脸识别模型
face_rec_model_path = sys.argv[2]
# 3.候选人脸文件夹
faces_folder_path = sys.argv[3]
# 4.需识别的人脸
img_path = sys.argv[4]
# 1.加载正脸检测器
detector = dlib.get_frontal_face_detector()
# 2.加载人脸关键点检测器
sp = dlib.shape_predictor(predictor_path)
# 3. 加载人脸识别模型
facerec = dlib.face_recognition_model_v1(face_rec_model_path)
# win = dlib.image_window()
# 候选人脸描述子list
descriptors = []
# 对文件夹下的每一个人脸进行:
# 1.人脸检测
# 2.关键点检测
# 3.描述子提取
for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
print("Processing file: {}".format(f))
img = io.imread(f)
#win.clear_overlay()
#win.set_image(img)
# 1.人脸检测
dets = detector(img, 1)
print("Number of faces detected: {}".format(len(dets)))
for k, d in enumerate(dets):
# 2.关键点检测
shape = sp(img, d)
# 画出人脸区域和和关键点
# win.clear_overlay()
# win.add_overlay(d)
# win.add_overlay(shape)
# 3.描述子提取,128D向量
face_descriptor = facerec.compute_face_descriptor(img, shape)
# 转换为numpy array
v = numpy.array(face_descriptor)
descriptors.append(v)
# 对需识别人脸进行同样处理
# 提取描述子,不再注释
img = io.imread(img_path)
dets = detector(img, 1)
for k, d in enumerate(dets):
shape = sp(img, d)
face_descriptor = facerec.compute_face_descriptor(img, shape)
d_test = numpy.array(face_descriptor)
# 计算欧式距离
for i in descriptors:
dist_ = numpy.linalg.norm(i-d_test)
dist.append(dist_)
# 候选人名单
candidate = ['Unknown1','Unknown2','Shishi','Unknown4','Bingbing','Feifei']
# 候选人和距离组成一个dict
c_d = dict(zip(candidate,dist))
cd_sorted = sorted(c_d.iteritems(), key=lambda d:d[1])
print "\n The person is: ",cd_sorted[0][0]
dlib.hit_enter_to_continue()
4.运行结果
我们在.py所在的文件夹下打开命令行,运行如下命令
python girl-face-rec.py 1.dat 2.dat ./candidate-faecs test1.jpg
由于shape_predictor_68_face_landmarks.dat和dlib_face_recognition_resnet_model_v1.dat名字实在太长,所以我把它们重命名为1.dat和2.dat。
运行结果如下:
The person is Bingbing。
记忆力不好的同学可以翻上去看看test1.jpg是谁的图片。有兴趣的话可以把四张测试图片都运行下试试。
这里需要说明的是,前三张图输出结果都是非常理想的。但是第四张测试图片的输出结果是候选人4。对比一下两张图片可以很容易发现混淆的原因。
机器毕竟不是人,机器的智能还需要人来提升。
有兴趣的同学可以继续深入研究如何提升识别的准确率。比如每个人的候选图片用多张,然后对比和每个人距离的平均值之类的。全凭自己了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具动手实操 | 如何用 Python 实现人脸识别,证明这个杨幂是那个杨幂? - 为程序员服务
动手实操 | 如何用 Python 实现人脸识别,证明这个杨幂是那个杨幂?
当前,人脸识别应用于许多领域,如支付宝的用户认证,许多的能识别人心情的 AI,也就是人的面部表情,还有能分析人的年龄等等,而这里面有着许多的难度,在这里我想要分享的是一个利用七牛 SDK 简单的实现人脸识别的方法,当然七牛的 SDK 中提供了很多的拓展,在返回的 JSON 中包含着如年龄等信息,这里就不进行分享了。这里我们要使用的是七牛云平台中由第三方数据处理提供的 API。
以下为官方给出的功能:
人脸 1v1 比对
人脸关键点(106 点)
人脸属性(年龄,性别)
我们要用的服务就是第一个:
人脸 1v1 比对
要做安全方面的内容,依靠人脸识别通过和库中的脸比对后判定相似率来验证用户身份。
快速从图片中识别出人的信息,用于寻人功能等。
其实从安全的角度出发有很多可以囊括的。比如智能家居中的刷脸开门,支付软件的刷脸支付等都是例子。
人脸特征提取的步骤
真正的人脸识别需要很多的知识,大体上粗略的可以分为以下步骤:
1.人脸检测(从图片中找到人脸):返回人脸位置和大小的参数。
2.人脸特征定位:一般 69 点或者 106 个点对人脸的特征定位,技术上有 Adaboost&haar,以及 MSRA 的 alignment。
3.人脸特征归一化(几何归一/灰度归一):前者对图像进行仿射变化使得不同的脸可以进行比对,后者则能使图像展现更多的细节以及减弱光线光照的应用。
4.特征提取-特征后期融合。(基于特征近似度的多特征融合)
5.特征距之间的距离来比对相似度、三氏距离。(马氏、欧氏 、巴氏)
(以上根据以前查到整理的资料得出,可能会存在认识错误)
可以看出如果直接对人脸进行分析是很复杂的,而现在也有很多成熟的人脸识别库,像是有名的 OpenCV ,OpenBR,还有国产的 Seeta Face engine 等等很多,这里就先不介绍了,而利用开源云平台的 API 可以使我们的工作量更加的小。
七牛云 API 的优点
应用七牛云平台的 API 对于使用者的能力要求较低,开发速度很快,只要输入/返回即可,但更加适用于移动端。
操作过程中的注意事项
每张图片要先上传到 bucket 中才可以利用。
API 对人脸匹配再返回很大程度依赖于用户的网络带宽。
当用户网络不好的情况下需要很久的时间才能得到返回结果。
要经过压缩处理,一般识别的较为准确最多可将图片压缩至 25 kb 左右。
使用七牛 API 的接口准备
我们需要用到的有 Qiniu 库的上传/鉴权命令,以及 requests 库得到处理后的图像,以及 json 库得到返回给我们的保存在 JSON 中的信息。
另外七牛的这个接口和图片瘦身接口一样也是要付钱的,具体的价格根据官方给的是(人脸识别对比服务 -&?1.5/1000次 )可以先向账户充入 ?2 避免无法使用服务。
解决问题的步骤
为了简化这个问题,所以本实例仅凸显 上传-&识别 -&返回结果 的过程,对于如何通过电脑摄像头取像,窗体制作仅提供方法和思路不进行详细分享。
首先,我们先分析七牛云中这个 API 的接口 :
http://xxx.xxx.glb.clouddn.com/xxx.jpg?faceanalyze/verification/url/&urlSafeBase64URI&&!-- 人脸一对一比对API--&
我们来分析下这个接口:
是 API 的接口,其中我们将最后的这句单独拿出来说,因为这个的意思是要将我们用于人像比对的标准人像图片的地址经过 urlbase64 加密后的地址信息。
所以我们要进行如下的步骤:
得到我们刚刚通过摄像头取得的人像
对我们的人像图片进行压缩
上传我们的人像图片到我们的 bucket 中(这里要申明一点,七牛所有支持的 API 都要求文件在华东的 Bucket 下)
得到我们上传的图片的链接地址
对链接进行 urlbase64 加密(这里只要 import python 的 base64 库即可)
得到网页的 JSON 格式数据
通过 JSON 库对数据进行分析
判断人脸的相似度是否符合,输出结果
删除 Bucket 中上传的临时图片
返回的 JSON 格式分析
{"status":"ok","confidence":0.}
我们可以看到返回的 JSON 信息很简单, status 的意思是成功和不成功,而 confidence 则是相似度,所以我们对返回的信息进行分析会很简单。 status 如若成功则为 ok,不成功则为 invalid。
人脸相似度的判断
上表中所用的图片都来自己互联网,从表数据我们可以大致将本人的相似度以 0.7 为分界线。不过有趣的是,不知道为什么按杨幂进行整容的为什么相似度竟然低于杨幂和范冰冰的相似度(其他女星照的图片为范冰冰的人像),不同性别的相似度差异明显,所以就粗略的根据表格定为 &0.7 即可认为是本人。
安装所需的库
在 python 中,我分享的这个例子总共需要引入 6 个库
#import SDK
from qiniu import Auth,put_file,etag
import qiniu.config
import requestsimport base64
import json
from PIL import Image
requests 库,json 库,PIL 库请自行安装;
base64 库和 OS 库为自带所以无需安装。
(由于电脑已经安装了较多库,所以对于这些库是否为自带也记得不太清楚,如果出现了错误,请大家对应自己安装。)
程序的实现
请见下方的代码,采集到的人脸为 face.jpg。 (这里用了杨幂的两张图片作为示例)
#七牛云"人脸识别"功能的python实现方法:by xlxw
#请得到自己的Secret和Access key用于上传图片到空间中进行处理
#人像识别是七牛云的一项收费项目,价格为 ¥1.5/1000次 测试时请先存2元避免意外
#import SDK
from qiniu import Auth,put_file,etag
import qiniu.config
import requests
import base64
import json
from PIL import Image
def upload(bucket,path,filename,key,url):
token = key.upload_token(bucket, filename, 3600)
print('正在上传..')
reform,inform = put_file(token, filename, path)
if reform != None:
print('已经成功地将{}-&&{}'.format(filename,bucket))
print("正在处理您的图片...")
url=url + '/' + filename
path=path.split('/')[-1]
print('这里出现了一个小错误.无法上传..')
def apiget(urlbucket,url):
url=urlbucket + '/001.jpg' + '?face-analyze/verification/url/' + url
#标准对比的图片地址,名称为001.jpg
r=requests.get(url)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
print("网络发生故障,请重试..")
#base64 Encode
def base64encode(url):
print("正在加密链接..")
enurl=base64.urlsafe_b64encode(bytes(url, "utf-8"))
print("加密完成")
enurl=str(enurl)
enurl=enurl.split("'")[1]
return enurl
print("这里出现了一个问题,请重试..")
#PIL 图片压缩
def pilresize(per,path):
im=Image.open(path)
imsize=im.size
sizex=int(imsize[0]*per)
sizey=int(imsize[1]*per)
im=im.resize((sizex,sizey))
im.save('trans.jpg','JPEG')
print('图片压缩完成,输出成功')
print('{}-&&({},{})'.format(imsize,sizex,sizey))
def pilwork(path):
size=os.path.getsize(path)
size = float(size)
kb=size/1024
pilresize(per,path)
print("请检查您的地址是否输入错误")
def jsonanal(jtext):
print("正在分析,请稍后..")
rj=json.loads(jtext)
stat=rj['status']
confi=rj['confidence']
return stat + ',' +str(confi)
def main():
#填写你的 AK 和 SK
accesskey = input('请输入您在七牛云的AccessKey:')
secretkey = input('请输入您在七牛云的SecretKey:')
keyq=Auth(accesskey,secretkey)
#所要操作的空间
bucketname =input("请输入要操作的空间(公开)名字:")
#所要操作空间的外链地址
urlbucket = input("请输入空间所绑定的域名或者默认外链地址:")
#判定操作类型
order=input('请输入你需要进行的操作:')
mode=order.split(' ')[0]
if mode == '识别':
path=order.split(' ')[1]
fname=path.split('/')[-1:][0]
unrl=urlbucket+'/trans.jpg'
print('正在压缩图片.请稍后..')
pilwork(path)
print("正在上传token,请稍后..")
upload(bucketname,'./trans.jpg','trans.jpg',keyq,urlbucket) #上传文件
enurl=base64encode(unrl)
#base64加密
jtext=apiget(urlbucket,enurl) #调用七牛api并得到返回的json数据
result=jsonanal(jtext)
#分析返回的json,得到最终相似度
if result.split(',')[0] == 'invalid':
print('识别发生了错误')
if eval(result.split(',')[1]) &= 0.7:
print("识别成功,鉴定为本人,相似度为{:.1f}".format(eval(result.split(',')[1])*100))
print("识别成功,鉴定不是本人,相似度过低")
if mode == '退出':
print("欢迎您的使用..")
#终端提示显示
print("+----------------------------------------+")
欢迎使用七牛的人脸识别功能
print("+----------------------------------------+")
print("|本程序须知:
print("|1.本程序测试图片为杨幂的人像,见face.jpg |")
print("|2.您需要提供服务的Accesskey,Secretkey
print("|3.您需要提供 bucket名字和bucket外链地址 |")
print("+----------------------------------------+")
print("|使用方法:
print("|1.识别输入格式: 识别 图片位置(包括后缀)|")
print("|2.退出输入格式: 退出
print("+----------------------------------------+")
程序运行的截图:
用到的杨幂的两张照片为:
(用于比对的标准人像图片)
(已用 PIL 压缩 x
(用于比对的图片)
总结和拓展
和大家分享七牛的 API 差不多结束了(说不定以后有更好玩的 API 也会拿来分享经验)。七牛还有许多优秀方便的 API 可以方便我们的使用.在这期间也学习到了很多的知识,比如许多库的熟悉掌握,像是 requests 库、bs4 库、 json 库当然还有主角 Qiniu 库。
可以用 python 的 QT 库开发图形界面,而 VideoCapture 库可用来调用电脑的摄像头进行拍照,然后经过本文的方法就能实现简单的人像识别了(你需要上传标准图片到 Qiniu 的 bucket 里)。
可另外再加入一些标准图片,如低光,不戴眼镜等等的图片,然后设计一个评判算法来适应各种各样的情况.本文就不再进行拓展,有兴趣的朋友可以试试。
转载请注明来自36大数据(36dsj.com):
关注大数据和大数据应用_大数据第一科技网
原文地址:, 感谢原作者分享。
您可能感兴趣的代码

我要回帖

更多关于 人脸识别手机 的文章

 

随机推荐