人脸识别还能这么玩

今天我们来扩展一下,用人脸玩飞机大战。虽然思路跟手势识别类似,但代码量比手势识别版稍多。

使用的人脸算法是毫秒级的,帧率能到 30,用电脑CPU运行也很流畅。

下面我分享下项目实现过程,文末获取项目完整的源代码。

准备飞机大战程序

Github上找到一个Python版本的飞机大战程序,安装Pygame即可运行。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

人脸识别还能这么玩

键盘的A、D、W、S键用来控制飞机的移动方向,分别对应左、右、上、下。

所以,接下来我们要做的是识别人脸,并对人脸姿态进行估计,将估计后的结果映射到左、右、上、下,从而控制飞机的运行。

人脸识别

这里,我们用opencv读取摄像头中的视频流。

将视频流中的每一帧送入mediapipe中的人脸识别模型,进行识别。

人脸识别还能这么玩

图片mediapipe 不止能识别人脸,还能标注出人脸 6 个关键点左眼、右眼、左耳、右耳、鼻子、嘴巴。

核心代码:

with self.mp_face_detection.FaceDetection(model_selection=0, min_detection_confidence=0.9) as face_detection:while cap.isOpened():success, image = cap.read()image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)results = face_detection.process(image)image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)if results.detections:for detection in results.detections:# 获取人脸框坐标face_box = detection.location_data.relative_bounding_boxface_w, face_h = int(face_box.width * frame_w), int(face_box.height * frame_h)face_l = int(face_box.xmin * frame_w) + face_wface_t = int(face_box.ymin * frame_h)face_r, face_b = face_l - face_w, face_t + face_h# 显示人脸框cv2.rectangle(image, (face_l, face_t), (face_r, face_b), (0, 255, 255), 2)self.draw_zh_img(image, self.face_box_name_img, (face_r + face_l) // 2, face_t - 5)pose_direct, pose_key_points = self.pose_estimate(detection)# 显示人脸 6 个关键点for point_name in FaceKeyPoint:mp_point = self.mp_face_detection.get_key_point(detection, point_name)point_x = int(mp_point.x * frame_w)point_y = int(mp_point.y * frame_h)point_color = (0, 255, 0) if point_name in pose_key_points else (255, 0, 255)cv2.circle(image, (point_x, point_y), 4, point_color, -1)# 显示关键点中文名称point_name_img = self.face_key_point_name_img[point_name]self.draw_zh_img(image, point_name_img, point_x, point_y-5)

这里有个小知识点需要大家注意下。

代码中用draw_zh_img来显示中文,由于opencv不支持直接显示中文。因此,我用PIL模块中Image方法提前绘制中文图片,并转为opencv格式。

Swapface人脸交换 Swapface人脸交换

一款创建逼真人脸交换的AI换脸工具

Swapface人脸交换 45 查看详情 Swapface人脸交换

人脸识别还能这么玩

在需要的时候,直接与视频流合并,效率高,不掉帧。

人脸姿态估计

之前手势识别,我们用相邻帧来判断手势的移动。人脸姿态估计只用当前帧就可以,相对容易一些。

我们通过人脸 6 个关键点的坐标距离,就可以判断出人脸的姿态

人脸识别还能这么玩

这里,左耳和鼻子的水平距离很近,因此,我们可以估计脸向左转,从而可以用只飞机向左移动。

同样的,用其他关键点,我们可以估计出人脸向右转、向上(抬头)和向下(低头)

核心代码:

# 左耳与鼻子水平距离,判断面部左转left_ear_to_nose_dist = left_ear.x - nose_pos.x # 右耳与鼻子水平距离,判断面部右转nose_to_right_ear_dist = nose_pos.x - right_ear.x# 鼻子与左眼垂直距离,判断面部向上nose_to_left_eye_dist = nose_pos.y - left_eye.y# 左耳与左眼垂直距离,判断面部向下left_ear_to_left_eye_dist = left_ear.y - left_eye.yif left_ear_to_nose_dist < 0.07:# print('左转')self.key_board.press_key('A')time.sleep(0.07)self.key_board.release_key('A')return 'A', [FaceKeyPoint.NOSE_TIP, FaceKeyPoint.LEFT_EAR_TRAGION]if nose_to_right_ear_dist < 0.07:# print('右转')self.key_board.press_key('D')time.sleep(0.07)self.key_board.release_key('D')return 'D', [FaceKeyPoint.NOSE_TIP, FaceKeyPoint.RIGHT_EAR_TRAGION]

姿态控制飞机移动

识别出人脸姿态,我们就可以用程序控制键盘,从而控制飞机移动。

这里我用PyKeyboard模块控制键盘按键

self.key_board = PyKeyboard()# print('左转')self.key_board.press_key('A')time.sleep(0.07)self.key_board.release_key('A')

press_key和release_key函数分别是按键和释放按键。

它们之间,调用了time.sleep(0.07)控制按键的时长,按键时间长,则飞机移动距离就长,反之,按键时间短,则飞机移动距离就短,大家可以根据自己的需求来调节。

以上就是人脸识别还能这么玩的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/548021.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
java框架与物联网的协同发展
上一篇 2025年11月9日 18:44:43
酷安怎么发布优质好物_酷安发布好物的步骤是什么
下一篇 2025年11月9日 18:44:48

相关推荐

  • 学信网能查到预科生的学籍吗_预科生学籍查询情况

    预科生学籍能否查询取决于是否完成正式录取和学校注册。若已取得正式学籍并由学校上报,可登录学信网或其微信公众号查询;未查到信息则需联系教务部门确认注册进度。 如果您是预科阶段的学生,想要确认自己的学籍信息是否能在学信网查询到,这通常取决于您当前的学籍状态以及所在学校的注册进度。以下是关于预科生学籍查询…

    2026年9月4日
    100
  • 交管12123驾驶证扣分学习怎么报名_交管12123驾驶证扣分学习报名方法

    交管12123驾驶证扣分学习怎么报名_交管12123驾驶证扣分学习报名方法交管12123驾驶证扣分学习怎么报名_交管12123驾驶证扣分学习报名方法交管12123驾驶证扣分学习怎么报名_交管12123驾驶证扣分学习报名方法交管12123驾驶证扣分学习怎么报名_交管12123驾驶证扣分学习报名方法

    驾驶人记分达12分需参加满分教育,通过“交管12123”APP或网页平台申请,满足驾驶证暂扣、无未处理违法、选择正确教育地等条件后,完成网络与现场学习并累计达标方可恢复资格。 如果您因交通违法导致驾驶证在一个记分周期内累积记分达到12分及以上,需要参加满分教育学习以恢复驾驶资格。以下是通过“交管12…

    2026年9月2日 用户投稿
    100
  • 抖音实名认证怎么可以认证两个号?有影响吗?

    想同时运营两个抖音账号,但担心实名认证只能绑定一个身份?其实,只要方法得当,完全可以在合规前提下实现双账号认证。本文将详细介绍如何用同一身份信息合理认证两个抖音号,并分析其中可能带来的影响与潜在风险。 一、抖音实名认证能否认证两个账号? 个人号+企业号组合:最推荐方案 你可以先用本人身份证认证一个个…

    2026年8月31日
    000
  • 没有学信网账号怎么查学历_无账号学历查询替代方案

    可通过四种方式查询学历:一、使用学信网零散查询功能,输入证书编号和姓名验证;二、通过国家政务服务平台小程序,完成实名认证后查询;三、联系毕业院校教务部门提交申请核实;四、利用微信城市服务中的教育类别进行学历查询。 如果您需要查询学历信息,但尚未注册学信网账号,无法通过常规方式登录查询,则可考虑使用不…

    2026年8月30日
    100
  • 手机淘宝怎么设置简洁?手机淘宝怎么设置简洁密码

    1、可通过关闭个性化推荐实现淘宝简洁界面;2、在账户与安全中修改为字母+数字组合的登录密码以兼顾安全与记忆;3、启用人脸、指纹或手势登录提升便捷性。 如果您觉得手机淘宝界面过于复杂,想要调整为更简洁的模式,或希望设置一个简单易记但安全的密码,可以通过以下方法进行操作。这些步骤将帮助您优化应用界面和账…

    2026年8月30日
    000
  • 京东plus会员白条怎么取消?京东plus会员白条代扣了?如何取消

    首先关闭京东APP中的PLUS会员自动续费,进入“我的”-PLUS会员-设置-管理自动续费,关闭并验证;再通过京东金融APP解绑白条代扣,路径为“我的”-支付设置-免密支付/自动扣款,找到PLUS会员项目解约;若操作失败,可联系京东客服人工取消,提供手机号、订单号等信息完成解约。 如果您在使用京东P…

    2026年8月29日
    100
  • win11怎么设置Windows Hello面部识别_win11面部识别登录设置步骤

    首先打开设置并进入账户的登录选项,然后选择面部识别(Windows Hello)并点击添加,验证当前PIN码或密码后,按照提示正对摄像头并在充足光线下缓慢移动头部完成面部数据录入,最后等待系统提示设置完成即可启用面部识别登录。 如果您希望使用生物识别技术快速安全地登录Windows 11系统,可以启…

    2026年8月29日
    500
  • 铁路12306怎么找回密码_铁路12306密码找回方式

    12306忘记密码可通过四种方式找回:①App内选择人脸识别,输入证件信息并完成刷脸验证后重置;②选择手机号验证,输入注册手机号、证件信息及短信验证码后设置新密码;③选择邮箱找回,提交邮箱信息后查收12306邮件并点击链接重置密码;④本人持有效身份证件前往车站窗口办理密码重置。 如果您在尝试登录铁路…

    2026年8月27日
    000
  • ​​如何设置开机密码?Win/Mac密码保护教程​

    开机密码,顾名思义,就是一道守护你电脑的第一道防线。设置它,能有效防止未经授权的访问,保护你的个人信息和数据安全。无论是 Windows 还是 macOS,设置开机密码都非常简单,但背后的逻辑和一些小技巧,可能你还不太清楚。 设置开机密码,其实就是给自己数据加把锁。 Windows 设置开机密码 W…

    2026年8月26日
    100
  • 如何开通小红书商户版_小红书商户版开通条件与申请步骤

    需先确认主体类型并准备相应资质,依次完成实名认证、提交材料、填写入驻信息、等待审核、签署协议缴费及店铺设置,方可开通小红书商户版。 如果您希望在小红书平台开展电商业务,但尚未完成商户版账号的注册与认证,则需要按照平台规定的流程提交相应资质并完成审核。以下是开通小红书商户版的具体操作步骤: 一、确认入…

    2026年8月26日
    100
  • HTML数据怎样进行数据创新 HTML数据创新应用的发展方向

    HTML5通过语义化标签、原生可视化和响应式设计构建智能数据界面,融合AI实现智能分析与应用,结合WebGPU等新技术打造跨平台数据生态,推动静态页面向动态智能工具演进。 HTML本身是网页的结构语言,不直接存储或处理数据,但通过与现代Web技术和数据平台结合,能成为数据创新的关键载体。真正的“HT…

    2025年12月23日
    000
  • html函数如何创建模态弹窗效果 html函数对话框元素的现代用法

    使用原生元素是创建模态弹窗的最佳方式,语义清晰且自带可访问性支持;通过showModal()和close()方法控制显示与关闭,结合::backdrop可自定义遮罩样式,减少JavaScript依赖,提升用户体验。 在现代 HTML 中,创建模态弹窗(Modal Dialog)最推荐的方式是使用原生…

    2025年12月23日
    000
  • canvas标签是用来做什么的

    canvas用于通过JavaScript在网页上绘制图形,提供像素级控制,适合高性能动态图形场景。 canvas 标签主要用来在网页上通过JavaScript绘制图形。它提供了一块空白的绘图区域,你可以用代码在这上面画出各种形状、文字、图片,甚至复杂的动画和游戏界面。它本质上是一个位图(bitmap…

    2025年12月22日
    000
  • html在用户按下按键时触发的事件属性onkeydown

    实例 当用户按键时执行一段 javascript: 浏览器支持 IE Firefox Chrome Safari 立即学习“前端免费学习笔记(深入)”; Opera 所有主流浏览器都支持 onkeydown 属性。 定义和用法 onkeydown 属性在用户(在键盘上)按键时触发。 提示:相对于 o…

    用户投稿 2025年12月21日
    000
  • html中用户(在键盘上)按键时触发的事件属性onkeypress

    实例 当用户按键时执行一段 javascript: 浏览器支持 IE Firefox Chrome 立即学习“前端免费学习笔记(深入)”; Safari Opera 所有主流浏览器都支持 onkeypress 属性。 定义和用法 onkeypress 属性在用户(在键盘上)按键时触发。 提示:相对于…

    用户投稿 2025年12月21日
    000
  • html中用户(在键盘上)释放按键时触发的事件属性onkeyup

    实例 当用户放松按键时执行一段 javascript: 浏览器支持 IE Firefox Chrome Safari 立即学习“前端免费学习笔记(深入)”; Opera 所有主流浏览器都支持 onkeyup 属性。 定义和用法 onkeyup 属性在用户(在键盘上)释放按键时触发。 提示:相对于 o…

    用户投稿 2025年12月21日
    000
  • 水印添加技术实现_防止信息泄露的保护措施

    水印技术通过可见与不可见方式保护数字内容,适用于图像、文档、视频等场景,结合动态信息嵌入与业务流程,提升版权保护与溯源能力,是低成本高效的信息防护手段。 在数字化信息传播日益频繁的今天,如何有效防止敏感内容被非法复制或滥用,成为企业和个人关注的重点。水印添加技术作为一种实用的信息保护手段,能够帮助追…

    2025年12月21日
    000
  • javascript_如何实现人脸识别

    JavaScript可通过TensorFlow.js或face-api.js在浏览器中实现人脸检测与识别,首先加载预训练模型,再利用摄像头视频流进行实时推理,提取人脸特征向量并比对,完成身份识别,全过程本地运行保障隐私,适合轻量级应用。 JavaScript 实现人脸识别主要依赖于浏览器中的前端技术…

    2025年12月21日
    000
  • JavaScript实现键盘控制音频播放的教程

    本文详细阐述了如何在web应用中通过键盘事件控制音频播放。核心内容包括:解析元素焦点对键盘事件监听的影响,推荐使用html “ 元素结合 `focus()` 方法实现无障碍的键盘控制,以及提供一种更通用的全局 `window.keydown` 事件监听方案,并强调在处理全局事件时避免干扰用户输入的…

    2025年12月21日
    000
  • 使用face-api.js在浏览器中实现多目标人脸识别与Svelte集成

    本教程旨在解决使用face-api.js在svelte项目中进行人脸识别时,多个人脸被错误识别为同一人的问题。文章将深入探讨`labeledfacedescriptors`和`facematcher`的正确构建方法,确保每个已知人脸都能被准确识别。通过详细的代码示例和专业指导,读者将学会如何加载模型…

    2025年12月20日
    000

发表回复

登录后才能评论
关注微信