一种简单而智能的方法:Python也能进行面部识别
off999 2024-10-20 08:08 33 浏览 0 评论
全文共2841字,预计学习时长8分钟
本文将介绍图像处理中的一些重要概念,除了具体解释每个步骤之外,还将提供一个在Python中使用Cv2和DLib库轻松进行人脸识别的项目。
感兴趣区域
在使用图像进行面部分析时,最重要的概念之一是定义感兴趣区域(ROI),我们必须在图像中定义一个特定的部分,在那里筛选或执行一些操作。
例如,如果我们需要筛选汽车的车牌,我们的感兴趣领域只停留在车牌上,那么街道、车身和图片中出现的任何东西都只是辅助部分。在本例中,我们将使用opencv库,该库支持对图像进行分区并帮助我们确定感兴趣领域。
Haar库
本项目中将使用现成的分类器:级联的Haar分类器,这种特定的分类器将始终适用于灰度图像。
该算法生成了一个几何图形,该几何图形将识别与我们所分析的相似点。因此在本例中,它将尝试寻找人脸图案,即眼睛、鼻子和嘴巴。这种分析方法最大的问题是产生幻想性视错觉。
你看到的是人眼还是几扇窗户?在希腊词源学中,幻想性视错觉是一种人类的特征。从童年起,我们的大脑就被编程来识别物体、图像中的人脸。利用我们先前获得的经验,我们自己的大脑会根据我们所认识到的“人类”特征来寻找一种模式,增加新的人脸面孔。
使用Haar人脸特征分类器
用以下图像为例:
来看看识别这张图片中的人脸代码:
import cv2
group_of_people_image = cv2.imread('images/image7.jpg')
frontal_face_classifier = cv2.CascadeClassifier('classifier/haarcascade_frontalface_default.xml')
image_in_gray_scale = cv2.cvtColor(group_of_people_image,cv2.COLOR_BGR2GRAY)
faces = frontal_face_classifier.detectMultiScale(image=image_in_gray_scale,scaleFactor=1.3, minNeighbors=6)
for (x_axis, y_axis, weight,height) in faces:
cv2.rectangle(group_of_people_image,(x_axis, y_axis), (x_axis + weight, y_axis + height), (255, 0, 0), 2)该算法将图像转换为灰度图像,如前所述,这是分类器操作的一个基本步骤,然后我们使用dectedMultiScale函数搜索图像中的人脸,并通过绘制矩形来显示图像的位置,当定位人脸时结果如下:
我们能够准确地分析两张出现的脸(采用矩形的方式将人脸框起来),有两个人完全正面地露出他们的脸,人脸完全显现,所以我们可以清楚地看到他的脸;另一个人只露出了面部的一部分,所以我们没有得到准确的信息来确认这是一张完整的人脸。
面部特征检测
Dlib是一个拥有一些分类器的库,可以帮助我们检测人脸的某些部分,例如:眼睛、眉毛、鼻子和洋娃娃的区域。以下图为例:
现在,使用算法来识别图像中的面部特征点:
import cv2
import dlib
import numpy as np
initial_image = cv2.imread('images/image9.jpg')
initial_image_in_rgb = cv2.cvtColor(initial_image,cv2.COLOR_BGR2RGB)
reference_image = initial_image_in_rgb.copy()
classifier_path = dlib.shape_predictor('classifier/shape_predictor_68_face_landmarks.dat')
frontal_face_detector = dlib.get_frontal_face_detector()
rectangles =frontal_face_detector(initial_image,1)
for k, d inenumerate(rectangles):
cv2.rectangle(reference_image,(d.left(), d.top()), (d.right(), d.bottom()), (255, 255, 0), 2)
landmarks = []
for rectangle in rectangles:
landmarks.append(np.matrix([[p.x, p.y] for p inclassifier_path(reference_image,rectangle).parts()]))
for landmark in landmarks:
for index, point inenumerate(landmark):
point_center = (point[0, 0], point[0, 1])
cv2.circle(reference_image,point_center, 3, (255, 255, 0), -1)
cv2.putText(reference_image,str(index), point_center, cv2.FONT_HERSHEY_COMPLEX, 3, (255, 255, 255), 2)我们使用的是人脸68个特征分类器,它试图更精确地理解点面,这给了我们更多的选择去分析结果,其缺点是速度有点慢。所以必须划定一个矩形来确定我们的脸可能在哪里,特征是我们可以识别的人脸特征,包括脸、嘴、眼睛、眉毛。
一旦用矩形的方式框出了脸,就可以使用功能部件将这些特征返回,最后将得到一些可视化的东西去生成一个带有面部点的图像。结果是:
这些点对于帮助识别表情很重要,例如我们可以识别出这个男孩睁着眼睛,闭着嘴巴。把这看作是一种情绪的表现,可以说这个男孩很焦虑。当一个人微笑时,它可以帮助理解这种情绪可能表达的是幸福。
上述例子向我们展示了,Python可以识别出我们感兴趣的区域,在本文中就是人脸识别。这个项目还可以扩展到使用机器学习来检测,探究图像中的人是否感到快乐、悲伤或者忧虑。
包含所有内容的项目可从以下网址获得:https://github.com/LimaGuilherme/facial-recognize
留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请后台留言,遵守转载规范
相关推荐
- 电脑开机反复启动不起来(电脑开机反复重启开不了机怎么办)
-
1、先关闭主机总电源,电脑先关机吧,打开机箱,将内存条插槽两边的白色专卡口轻向下按,使内存条属弹出插槽。?2、取出内存条后,用干净的橡皮擦擦拭金手指或者用吹风机吹一吹。?3、然后将内存条对准插槽的卡口...
- win10家庭版转专业版密钥(windows10家庭版升级到专业版密钥)
-
家庭版升级专业版密钥,需要付费购买获取不可以,家庭版密钥只是电脑还原时有效,重装系统就没有用了,可以看下面的方法。我是在淘宝买过几个不同系统的密钥都很好用,1-10元都买过,您进入搜索您需要系统的密钥...
- 安卓镜像下载(安卓镜像下载官网)
-
vmwareiso镜像文件可以从VMware官网下载。具体的下载步骤如下:1.打开VMware官网,进入产品下载页面。2.在产品下载页面,选择需要下载的VMware产品,比如VMwareWork...
- 哪个品牌u盘最可靠(哪个品牌的u盘好用)
-
十大耐用云U盘排行分别是:第一名闪迪第二名雷克沙第三名金士顿第四名三星第五名美商海盗船第六名东芝第七名惠普第八名威刚第九名台电第十名朗科。 质量最稳定u盘是金士顿:全球存储产品领导品牌,全球规模最大...
- windows11系统怎么样(win11使用怎么样)
-
免激活的WindowS11系统很好用,所谓的免激活,并不是不激活,而是在安装的过程当中已经进行了激活,如果激活码是正规渠道获得的,那么就可以被微软所认可,这样的系统在今后的升级或者是打补丁的过程当中...
- 打印机如何网络共享打印(打印机网络共享打印怎么设置)
-
想要建立打印机共享使用的方法如下1右击【计算机】选择【管理】,在弹出的【计算机管理】窗口中:系统工具->本地用户和组->用户,在右边找到【Guest】双击进去,把账户已禁用的勾选去掉。2回...
- 联想售后维修服务地址(联想售后维修 电话)
-
官方网站:http://www.lenovo.com.cn/作为全球电脑市场的领导企业,联想从事开发、制造并销售可靠的、安全易用的技术产品及优质专业的服务,帮助全球客户和合作伙伴取得成功。联想公司主要...
- 华硕系统(华硕系统恢复)
-
华硕电脑安装的是微软公司的windows系统。一般的华硕电脑出厂的时候安装的都是微软的操作系统,不会安装安卓或者苹果的操作系统。安卓的操作系统一般都是安装在手机上面的,苹果的操作系统都是安装在苹果手机...
- wifi强力破解软件排名(wife强力破解软件)
-
目前我还沒发现有可以破解WiFi密码的软件,有可能有,但这是违法的,所以开发者不可能在网上发布的。有很多人说万能钥匙,其实万能钥匙不是破解WiFi密码,而是密码共享,也就是说一台手机上安装万能钥匙,有...
- 电脑回收站怎么找出来(电脑回收站到哪里找)
-
1、打开电脑来到桌面,在空白的地方单击右键,在跳出来的属性中选择个性化。2、点击更改桌面图片,然后会跳出一个桌面图标设置,对桌面上固有图标的更改。3、在桌面图标设置中你可以看到回收站前面未勾选,勾选了...
- windows xp电脑公司特别版(正版windows xp)
-
1、请看下你的游戏说明,是否需要最新版本的显卡驱动支持,如果需要,请将你的显卡驱动升级到最新版。另外,Win7系统内置了很多显卡驱动程序,所以很多计算机在安装完操作系统后都不需要再安装显卡驱动,但是还...
- win7怎么设置定时关机命令(windows7设置定时关机)
-
1、点击屏幕左下方的开始菜单,点运行,输入cmd, 2、弹出一个黑色的框,在里面输入shutdown-f-s-t3600,记住后面这几个字母要加空格,这里面的3600代表的是3600秒,比如...
- windows7恢复出厂设置后账户停用
-
1、重新开机或电脑重启的过程中,也就是在出现品牌Logo的时候,连续按F8进入安全模式,选择带命令行的安全模式。 2、管理员身份打开的命令提示符窗口,输入并回车执行:compmgmt.msc命令。3...
- 随身wifi每月怎么交钱(随身wifi是怎么交费的)
-
需要看具体的随身wifi服务商和套餐类型。一般来说,续费可以通过以下途径实现:1.网上续费:登录随身wifi服务商的官网,找到相应的续费渠道,选择套餐并支付即可;2.APP续费:下载随身wifi...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
慕ke 前端工程师2024「完整」
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
