0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用Python和函数库进行简单的人脸识别?(附源码)

如意 来源:读芯术微信公众号 作者:读芯术微信公众号 2020-09-04 14:06 次阅读

本文将介绍图像处理中的一些重要概念,除了具体解释每个步骤之外,还将提供一个在Python中使用Cv2和DLib库轻松进行人脸识别的项目。

感兴趣区域

在使用图像进行面部分析时,最重要的概念之一是定义感兴趣区域(ROI),我们必须在图像中定义一个特定的部分,在那里筛选或执行一些操作。

例如,如果我们需要筛选汽车的车牌,我们的感兴趣领域只停留在车牌上,那么街道、车身和图片中出现的任何东西都只是辅助部分。在本例中,我们将使用opencv库,该库支持对图像进行分区并帮助我们确定感兴趣领域。

Haar库

本项目中将使用现成的分类器:级联的Haar分类器,这种特定的分类器将始终适用于灰度图像。

算法生成了一个几何图形,该几何图形将识别与我们所分析的相似点。因此在本例中,它将尝试寻找人脸图案,即眼睛、鼻子和嘴巴。这种分析方法最大的问题是产生幻想性视错觉。

你看到的是人眼还是几扇窗户?在希腊词源学中,幻想性视错觉是一种人类的特征。从童年起,我们的大脑就被编程来识别物体、图像中的人脸。利用我们先前获得的经验,我们自己的大脑会根据我们所认识到的“人类”特征来寻找一种模式,增加新的人脸面孔。

使用Haar人脸特征分类器

用以下图像为例:

来看看识别这张图片中的人脸代码:

如何利用Python和函数库进行简单的人脸识别?(附源码)

该算法将图像转换为灰度图像,如前所述,这是分类器操作的一个基本步骤,然后我们使用dectedMultiScale函数搜索图像中的人脸,并通过绘制矩形来显示图像的位置,当定位人脸时结果如下:

我们能够准确地分析两张出现的脸(采用矩形的方式将人脸框起来),有两个人完全正面地露出他们的脸,人脸完全显现,所以我们可以清楚地看到他的脸;另一个人只露出了面部的一部分,所以我们没有得到准确的信息来确认这是一张完整的人脸。

面部特征检测

Dlib是一个拥有一些分类器的库,可以帮助我们检测人脸的某些部分,例如:眼睛、眉毛、鼻子和洋娃娃的区域。以下图为例:

现在,使用算法来识别图像中的面部特征点:

如何利用Python和函数库进行简单的人脸识别?(附源码)

我们使用的是人脸68个特征分类器,它试图更精确地理解点面,这给了我们更多的选择去分析结果,其缺点是速度有点慢。所以必须划定一个矩形来确定我们的脸可能在哪里,特征是我们可以识别的人脸特征,包括脸、嘴、眼睛、眉毛。

一旦用矩形的方式框出了脸,就可以使用功能部件将这些特征返回,最后将得到一些可视化的东西去生成一个带有面部点的图像。结果是:

这些点对于帮助识别表情很重要,例如我们可以识别出这个男孩睁着眼睛,闭着嘴巴。把这看作是一种情绪的表现,可以说这个男孩很焦虑。当一个人微笑时,它可以帮助理解这种情绪可能表达的是幸福。

上述例子向我们展示了,Python可以识别出我们感兴趣的区域,在本文中就是人脸识别。这个项目还可以扩展到使用机器学习来检测,探究图像中的人是否感到快乐、悲伤或者忧虑。

包含所有内容的项目可从以下网址获得:https://github.com/LimaGuilherme/facial-recognize
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61308
  • 人脸识别
    +关注

    关注

    76

    文章

    3955

    浏览量

    80556
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
收藏 人收藏

    评论

    相关推荐

    基于贝叶斯分类器和径向基函数(RBF)网络融合的人脸识别方法的设计方案

    隐层中心宽度的学习速率,m为迭代次数。实验结果及分析  利用Yale人脸的人脸图像数据进行实验人脸
    发表于 10-23 10:03

    基于openCV的人脸检测系统的设计

    通过对基于Adaboost人脸检测算法的研究,利用该算法与计算机视觉类openCV进行人脸检测系统的设计,实现了对出现在视频或图像中的人脸
    发表于 12-23 14:19

    【LeMaker Guitar申请】基于LeMaker Guitar的人脸识别系统

    基于OpenCV的嵌入式人脸识别系统。项目以OpenCV为基础,客户端采用QT作为图形界面开发,后期根据需要还可以加入其他一些功能。如果时间够的话还准备尝试下利用OpenCV和LeM
    发表于 01-18 16:23

    【LeMaker Guitar试用体验】之基于Python的人脸识别系统【结贴】

    Python编程语言下实现基于LeMaker Guitar的人脸识别系统,具体方案操作如下。一.实验说明系统设备:1.LeMakerGuitar开发板2.蓝色妖姬免驱USB摄像头辅助软件
    发表于 02-25 14:03

    【Raspberry Pi 3试用体验】+Opencv+python的人脸识别

    ;)看一下效果:光线不好还是能认出来,说明opencv自带的分类器算开源里面不错的了~参考:Tigerboard开发板试用体验 python+opencv的人脸识别 NanoPi2试用体验
    发表于 05-13 21:38

    人脸识别技术原理解析

    也是一种1vN的人脸查找,其目标人脸是一个由n个人脸组成的“熟人”,随着n的增大,准确识别
    发表于 12-23 23:17

    人脸识别的研究范围和优势

    的主要目的是在输入的整幅图像上寻找人脸区域。2.人脸表征采取某种方式检测人脸和数据的人脸。3.人脸
    发表于 06-29 11:52

    人脸识别经典算法实现python

    系数,和各个已知人的人脸图像比较进行识别。Pentland等报告了相当好的结果,在 200个人的 3000幅图像中得到 95%的正确识别率,在FERET数据
    发表于 05-04 17:25

    企业安防中的人脸识别技术应用解决方案,八达马人脸技术剖析

    随着视频监控应用正在快速普及,一种远距离、用户非配合状态下的快速身份识别技术需求应运而生。动态人脸比对技术无疑是最佳选择,可从视频监控图像中实时快速地检测、查找人脸,并与人脸数据
    发表于 08-01 15:53

    Dragonboard 410c USB摄像头进行人脸识别

    的方法来实现对测试人脸的预测。准备好数据后,就可以利用这些数据进行简单的人脸识别了,根据上述数据
    发表于 09-21 10:53

    LabVIEW人脸识别设计

    ,但由于其易于上手,编程简单,广泛应用于生产生活中的各个领域。LabVIEW自带算法无法实现人脸检测以及识别,但是其支持调用第三方函数库,因此,本课程
    发表于 04-28 10:00

    带你玩转OpenHarmony AI:基于Seetaface2的人脸识别

    ;pd_2_00_pts81.dat", seeta::ModeStting::CPU, 0);获取完面部特征数据后,SeetaFace2提供了一个人脸数据进行保存对应的人脸信息数据
    发表于 12-21 10:42

    Python编程实例——利用Dragonboard 410c开发板实现人脸识别(二)

    在上一期基于DragonBoard 410c开发板实现人脸识别文章中,已经教大家如何利用Python实现人脸
    发表于 02-08 11:43 1351次阅读
    <b class='flag-5'>Python</b>编程实例——<b class='flag-5'>利用</b>Dragonboard 410c开发板实现<b class='flag-5'>人脸</b><b class='flag-5'>识别</b>(二)

    RD8x3x单片机函数库源码

    RD8x3x单片机函数库源码分享
    发表于 10-21 15:47 0次下载

    基于python代码的人脸识别实例

    基于python代码的一个人脸识别的实例,完整的实例,本人在pycharm中实测通过,是一个很基础的入门级的人脸检测和识别
    发表于 07-18 11:11 10次下载