10行代码搞定人脸识别?Python可以!

作者&投稿:宗圣帘 (若有异议请与网页底部的电邮联系)
~ 人脸识别技术,通过对人脸特征进行分析和计算,实现身份的识别,被誉为“三大实用生物特征识别技术”之一,与指纹识别、虹膜识别齐名。

该技术通过摄像机或摄像头采集含有人脸的照片或视频,检测和跟踪视频中的人脸,最终实现人脸识别和辨认的目标。

令人惊讶的是,仅用Python的10行代码,我们就能实现人脸识别功能(惊讶脸Σ(⊙▽⊙"a),下面是具体实现方法。

以下是该程序的带注释版本,完整程序及相关配套文件可在此github库中找到,有兴趣的朋友可以fork下来尝试。下面是整个程序的代码,我将逐行进行解释分析。

接下来,让我们看看程序的运行效果。

运行程序后,识别出面部并高亮显示的结果。

准备工作:由于此程序使用Python,因此您需要安装Python。这里不再赘述。此外,还需要安装OpenCV。值得一提的是,OpenCV是一个开源的机器识别深度学习框架。特别提醒Mac用户,建议使用brew进行安装。

安装完成后,在Python的命令行中输入以下代码进行验证,如果没有报错,则说明已成功安装。

加载OpenCV中自带的人脸识别层级分类器HAAR Casade Classifier,用于对输入的图片进行人脸判断。

在机器深度学习领域,针对识别不同物体都有不同的分类器。例如,有识别洗车、飞机、笑容、眼睛等的分类器。而我们需要进行人脸识别,因此需要一个面部识别的分类器。

物体识别的原理:通常,要使机器学习识别“人脸”,就需要使用大量的样本图片进行预先训练,这些图片分为两大类:positive和negative,即包含人脸和不包含人脸的图片。当使用程序分析这些图片时,程序会进行分类,即合格的图片与不合格的图片。这些分类器在学习过程中积累的“知识”,如判断时的临界值等,都会存储在一个个XML文件中。

这里的Cascade指的是层级分类器。为什么要分层呢?因为在对照片进行分析时,实际上是对整个图片从上到下、从左到右,一个像素一个像素进行分析。这些分析涉及许多特征分析,如人脸分析就包括识别眼睛、嘴巴等。为了提高分析的准确度,通常需要有成千上万个特征。这样,对于每个像素,都需要进行成千上万的分析,整个图片都是百万甚至千万像素,计算量巨大。但科学家们很聪明,想到了分层的理念,即把这些特征分层,这样分层次去验证图片。如果前面层次的特征没有通过,对于这张图片就不需要判断后面的特征了。这有点像系统架构中的FF(Fail Fast),从而提高了处理的速度和效率。

使用OpenCV库加载传入的测试图片。

首先将图片进行灰度化处理,以便于图片分析。在图像识别领域,这种方法非常常见。例如,在进行验证码的机器识别时,会先进行灰度化处理,去除不相关的背景噪声图像,然后再分析每个像素,以便抽取出真实数据。针对此,您会发现很多验证码后面特意添加了很多的噪音点、线,就是为了防止这种程序来灰度化图片进行分析破解。

执行detectMultiScale方法来识别物体,因为我们这里使用的是人脸的Casade分类器,因此调用这个方法进行面部识别。后面的参数设置用于识别时的配置,例如。

显示查找到的人脸数量,需要提到的识别物体的方法返回的一个找到的物体的位置信息的列表,因此使用len来打印出找到了多少物体。


编程MATLAB,注释,人脸识别,请给代码加注释
clear;读图像,rgb转到ntsc空间,对满足要求的亮度的像素进行标记 I=imread('E:\\Matlab\\ͼƬ\\q5.jpg');O=rgb2ntsc(I);G=O(:,:,2);[m n]=size(G);U=zeros(m,n);for i=1:m for j=1:n if G(i,j)>0.03&&G(i,j)<0.16 U(i,j)=1;end end end 也就是说到...

想删掉人脸识别,可是忘记密码了,怎么办?
开机进入安全模式,在安全模式下在控制面板中用户帐户中能重置、删除密码

python编程完全自学教程?
1、首先零基础学习编程,就是选择一个适合自己的版本。对于0基础学习Python是非常不错的选择,虽然有很多比较知名的开发语言,但是相对于来说Python是最适合入门学习的。目前学习的话可以从Python3开始了,因为Python2将慢慢退出历史。 2、选择合适的书籍,学习Python可以找到合适入门到书籍仔细阅读相关的书籍,毕竟好记性不如...

联想的人脸识别系统和BIOS有关吗?可以在BIOS里面设置相关的一些设置吗...
以前用的时候都是系统带有的软件,估计跟BIOS没什么关系,它是在系统启动后加载的程序,比登入系统的程序运行早一些。如果是人脸识别进BIOS的话就不一样了,估计现在也米有人脸识别BIOS密码的电脑呢。

农业银行错误代码ESGFER0211是什么意思?
农业银行错误代码ESGFE0211的意思是贷款申请没有通过。可以打开手机网上银行关闭手机网络在重新试一次,用手机GPRS网络重新登录试试网银就可以了。很多时候我们在使用农业银行支付的时候可能会因为各种外在因素出现错误代码比如ESRESE,这个错误代码的意思就是消除。同事小张的掌上银行就总是写着错误代码,这些...

东航东方万里行商城消费密码是多少?
东方万里行积分本身就是个伪命题,积分兑换系统设置很多人为的障碍。你没有查询密码你就申请不了消费密码,开通的查询密码,申请消费密码时要么显示系统繁忙,要么显示错误代码为9001,银行账号格式不对。如此一来很多人选择放弃。极少死缠烂打为了真能兑换这点积分,非要到营业厅去开通。回去之后还有山路...

安卓开发需要学什么
安卓开发需要学:一、应用程序 Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类负责创建视窗,一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。二、中介软件 操作系统与应用程序的沟通桥梁,并用分为两层:...

学习Java的最佳路线
首先先搞懂JavaSE的部分,Swing和swt部分就可以少看或不看,因为现在用的比较少。重点是看懂Java中的面向对象、集合框架、JDBC、异常、IO、线程和网络编程。JavaSE搞定后再学习Servlet、JSP,然后才是经典的Struts2、Hibernate和Spring,学习框架时重点理解框架的运行原理,甚至可以尝试自己写个轻量级的框架。...

宁都县19220977528: 求一份完整可运行的3D人脸特征提取代码,matlab实现. -
系燕乙氧: 人脸识别MATLAB代码1 1.色彩空间转换 function [r,g]=rgb_RGB(Ori_else rr(i,j)=R1(i,j)/RGB(i,j); % rgb归一化 gg(i,j)=G1(

宁都县19220977528: 如何利用python进行精准人脸识别 -
系燕乙氧: 要调用api接口,建议用face++的,支付宝的人脸识别都是用的这个.可能需要一点费用,不贵,代码里把fece++的api接口放进代码就行,还可以可以检测情绪,年龄等等的.当然也有其他公司人脸识别的api接口,自己发现吧,其实很多,但基本都不会免费,有的可以试用

宁都县19220977528: 如何获取人脸 68个关键点 python代码 -
系燕乙氧: 可以使用OpenCV,OpenCV的人脸检测功能在一般场合还是不错的.而ubuntu正好提供了python-opencv这个包,用它可以方便地实现人脸检测的代码. 写代码之前应该先安装python-opencv: #!/usr/bin/python# -*- coding: UTF-8 -*- # face_detect.py #...

宁都县19220977528: 可以不用openCV,用C++写一个简单的人脸识别程序么 -
系燕乙氧: 可以的,现在的话基于Dlib可能会更简单.这是一个dlib的例子,基于Python语言.但是dlib是C++开发的,可以很容易地改成C++.40行代码的人脸识别实践

宁都县19220977528: 求人脸识别源代码 -
系燕乙氧: 基于Gabor特征提取和人工智能的人脸检测系统源代码Face Detection System这是一个使用了Gabor特征提取和人工智能的人脸检测系统源代码关键内容 使用步骤:1. 拷贝所有文件到MATLAB工作目录下(确认已经安装了图像处理工具箱和人...

宁都县19220977528: 求人脸识别算法matlab代码,能运行的! -
系燕乙氧: SUB_WNL:PUSH PSWMOV A, SJACALL BCD2BIN_MOD4; x 400年: (大周期); =146097天 = 7 * 20871 + 0 天; x 100年:; 000年 = 7 * 0 + 0 + 1 - 1 1 = 0 * 2 + 1 ****; 100年 = 7 * 5217 + 7 + 1 - 2 2 = 1 * 2; 200年 = 7 * 10435 + 7 + 1 - 4 4 = 2 * 2; 300年 = 7 * 15653 + 7 + 1 - 6 6 = 3 * 2; {1,2,4,6}

宁都县19220977528: 关于MATLAB人脸识别的问题 -
系燕乙氧: 代码太多了,我说一下算法:先把原始图片数字化(很简单),save.然后当输入一张图片时候,把它也数字化,一般是一个4维矩阵,然后和原始4维矩阵比对矩阵里的数据比对率接近你设定值时,OK了,纯手打,望采纳,谢谢

宁都县19220977528: 人脸识别 开发代码有没有分享一个? -
系燕乙氧: 关于这种功能非常重要、且实用的应用软件源代码(人脸识别、声音识别等),即使不是在互联网上,就是在不同的单位或者是个人之间,都不会随便就轻易将别人辛辛苦苦开发的源代码分享给对方,就更不用说通过网络渠道,让软件开发者将正式的应用软件源代码分享给别人了. 另外,即使要将这种功能非常重要的应用软件分享给别人,那肯定也是必须要签订软件转让合同之类的,软件开发者才会将软件的使用权转让给对方.

宁都县19220977528: 求个MATLAB大神来帮忙解释下,这段人脸检测的代码是基于什么样的算法原理实现的. -
系燕乙氧: 这段程序是基于Viola-Jones 算法检测人脸、鼻子、眼睛的,其过程是先用faceDetector = vision.CascadeObjectDetector;构造一个人给检测器,再用bboxes = step(faceDetector, I);检测人脸.

宁都县19220977528: 如何在unity3d中实现人脸识别功能 -
系燕乙氧: 载入场景的我会, 先打开你要载入的那几个场景 Unity 中File → Build Settings → Add Current 然后就能看到添加进去了 代码是: Application.LoadLevel("SceneName"); //根据场景名称 Application.LoadLevel(0);//根据数字 可以放在 If 里进行场.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网