分享好友 最新动态首页 最新动态分类 切换频道
【MediaPipe】(3) AI视觉,人脸识别,附python完整代码
2024-12-26 14:31

各位同学好,今天和大家分享一下如何使用MediaPipe完成人脸实时跟踪检测,先放张图看效果,FPS值为14,右侧的输出为:每帧图像是人脸的概率,检测框的左上角坐标及框的宽高。

有需要的可以使用 cv2.VideoCapture(0) 捕获电脑摄像头。本节就用视频进行人脸识别。


 

人脸检测的相关说明见官方文档

MediaPipe 人脸检测是一种识别速度超快的方法,具有 6 个特征点和多面支持。它基于BlazeFcae一个轻量级且性能良好的面部检测器,专为移动GPU推理量身定制。该探测器的超实时性能使其能够应用于任何需要精确感兴趣面部区域作为其他任务特定模型输入的实时取景器体验,例如3D面部关键点或几何估计(例如 MediaPipe Face Mesh)面部特征或表情分类以及面部区域分割。


从mediapipe中导入检测方法,今天我们使用人脸检测 mediapipe.solutions.face_detection

 

(1mediapipe.solutions.face_detection.FaceDetection()   人脸检测函数

参数

min_detection_confidence 默认为 0.5。人脸检测模型的最小置信值 (0-1之间),高于该置信度则将检测视为成功。

返回值

detections检测到的人脸的集合,其中每个人脸都表示为一个检测原始消息,其中包含 人脸的概率、1 个边界框、6 个关键点右眼、左眼、鼻尖、嘴巴中心、右耳、左耳)。边界框由 xminwidth (由图像宽度归一化为 [0, 1])以及 ymin height (由图像高度归一化为 [0, 1])组成。每个关键点由 x 和 y 组成,分别通过图像宽度和高度归一化为 [0, 1]。

返回值.score 获取图像是人脸的概率

返回值.location_data 获取识别框的 x, y, w, h 和 6个关键点的 x, y

返回值.location_data.relative_bounding_box 获取识别框的 x, y, w, h

返回值.location_data.relative_keypoints 6个关键点的 x, y 组成的列表

(2mediapipe.solutions.drawing_utils.draw_landmarks()  绘制手部关键点的连线

参数: 

image 需要画图的原始图片

landmark_list检测到的手部关键点坐标

connections 连接线,需要把那些坐标连接起来

landmark_drawing_spec 坐标的颜色,粗细

connection_drawing_spec 连接线的粗细,颜色等


使用 cv2.VideoCapture() 读取视频文件时,文件路径最好不要出现中文,防止报错。

变量.read() 每次执行就从视频中提取一帧图片,需要循环来不断提取。用success来接收是否能打开返回True表示可以打开img保存返回的的每一帧图像

由于读入视频图像通道一般为RGB,而opencv中图像通道的格式为BGR,因此需要 cv2.cvtColor() 函数将opencv读入的视频图像转为RGB格式 cv2.COLOR_BGR2RGB

 

结果如下图所示,准确找到了人脸位置,并绘制识别框。右侧打印识别框和关键点信息。


在这里我更加关注识别框的位置位置,不太关心关键点的坐标信息,因此接下来我们单独绘制识别框,并把每一帧图像的人脸概率显示出来。如果有同学更关注人脸关键点,可以使用mediapipe的人脸网状检测,能得到的关键点非常多,这个我在后续章节也会写。

因此,接下来我们在上面代码的基础上继续补充。detection.location_data.relative_bounding_box 获取检测框的左上角坐标和检测框的宽高,保保存在bbox中。如下我们可以看到识别框的信息都是归一化之后的,需要将其转换为像素坐标。

 

转换方法也很简单,只需要将比例长度x和w乘以实际图像宽度即可得到像素长度下的x和w,同理y和h。注意,像素长度一定是整数,如[200,200],比例长度是小数,如[0.5, 0.5]

使用自定义矩形绘制函数cv2.rectangle(),现在有了像素坐标下的左上坐标xy,框的宽w和高h。就可以在原图像img上把框绘制出来。

detection.score 获取检测框的人脸概率,返回只有一个元素的列表detection.score[0] 提取这个元素,返回浮点型数值。

 

结果如下图所示,右侧输出每帧图像的每个识别框的概率和框坐标


接下来把识别框做的好看一些,只需要修改矩形框样式即可,我们接着上面的代码编辑。把识别框宽度调细一些,在四个角上添加粗线段。

 

修改后的检测框效果如下

我们将坐标信息存放在了boxlist中boxlist.append([index, detection.score, bbox]) 存放人脸索引、评分、检测框信息,把它打印出来看一下比如某帧图像所在的视频有3张脸每一帧都会输出0、1、2三个识别框的概率,左上角坐标xy,框的宽高wh

最新文章
AI技术如何实现超逼真美女写真?这几款工具对比评测告诉你!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个数字化的时代,科技正在打破传统艺术形式的界限。你是否曾想过,利用AI技术轻松生成超
Docker可视化管理工具Portainer的安装及使用
Portainer是开源、轻量级的Docker的图形化管理工具。提供状态显示面板,应用模板快速部署,容器镜像网络数据卷的基本操作、时间日志分析、容器控制台操作、Swarm集群和服务等集中管理和操作,登录用户管理和控制等功能。
2024中国游戏产业年会:未成年人保护与AI创新的未来探索
在中国游戏产业持续发展的背景下,2024年12月12日,中国音像与数字出版协会游戏出版工作委员会主办的中国游戏产业年会产业发展论坛如期在北京市石景山区首钢国际会展中心召开。本次论坛的核心议题集中于未成年人保护措施及人工智能技术在游
4款AI自动生成PPT神器,制作PPT太容易了
在当今数字化时代,无论是职场人士还是在校学生,PPT已经成为工作和学习中不可或缺的展示工具。从项目回顾到学术答辩,甚至是婚礼致辞,一份精心制作的PPT总能给人留下深刻印象。 为了帮助您更高效地完成PPT制作&#
AI创作平台,一站式内容生成,系统搭建方案
标题创作新纪元——南阳迈特网络科技有限公司打造一站式内容生成平台随着人工智能技术的飞速发展,内容创作领域也迎来了前所未有的变革。南阳迈特网络科技有限公司紧跟时代潮流,推出了迈特AI系统,旨在为用户提供从码到上线协助的一站内容
2025 AI Agents百家争鸣,2026智能代理+Web3触发万物经济
作者:彭昭(智次方创始人、云和资本联合创始合伙人)这是我的第353篇专栏文章。智能代理(AI Agents)似乎成为了OpenAI的下一张“王牌”。根据彭博社的报道,OpenAI口中代表AGI通用人工智能第3阶段的智能代理,将于2025年1月发布。OpenAI
2019年淘宝排名规则是什么?怎么提升排名?
淘宝作为一个购物平台,上面有着千千万万的商家在运营,而对于这些商家来说,肯定是需要有一个排名的,这样买家搜索的时候才会按照排名的先后顺序被搜索出来,这样的话,淘宝商家也才有动力来好好运营店铺,那么2019年淘宝排名规则是什么呢
chrome苹果手机版
chrome苹果手机版是一款功能极其强大的浏览器,是由Google(谷歌)公司开发的一款开放源代码浏览器,它可以让用户更快速、安全且轻松地访问用户所需要搜索的网页。软件的程式码是基于其他开放源代码软件所撰写,包括WebKit和Mozilla,目标
1688批发进货网,如何通过平台找到性价比高的商品?
1688批发进货网是许多中小企业和个体商户常用的批发采购平台。在这里,用户可以通过搜索不同的商品,找到价格更为优惠的商品,从而提高自己的利润空间。然而,很多人也在考虑如何才能通过这个平台找到性价比更高的商品,避免陷入价格过高或
2024年北京甲级设计加盟成立分公司的要求+2024top5甲级设计加盟实力排行榜
2024年北京甲级设计加盟成立分公司的要求+2024top5甲级设计加盟实力排行榜
相关文章
推荐文章
发表评论
0评