太极馆如何做网站/免费个人博客网站

太极馆如何做网站,免费个人博客网站,四川网站排名,网页界面设计的分类文章目录 dlib库dlib库——人脸应用实例——表情识别dlib库——人脸应用实例——疲劳检测 dlib库 dlib库的基础用法介绍可以参考这篇文章:https://blog.csdn.net/lou0720/article/details/145968062?spm1011.2415.3001.5331,故此这篇文章只介绍dlib的人…

文章目录

    • dlib库
    • dlib库——人脸应用实例——表情识别
    • dlib库——人脸应用实例——疲劳检测

dlib库

dlib库的基础用法介绍可以参考这篇文章:https://blog.csdn.net/lou0720/article/details/145968062?spm=1011.2415.3001.5331,故此这篇文章只介绍dlib的人脸应用实例。

dlib库——人脸应用实例——表情识别

在这里插入图片描述
代码:

import numpy as np
import cv2
import dlib
from sklearn.metrics.pairwise import euclidean_distances
from PIL import Image, ImageDraw, ImageFontdef cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=20):""" 向图片中添加中文 """# 判断输入的 img 是否为 OpenCV 格式的图片(即 numpy.ndarray 类型)if isinstance(img, np.ndarray):# 如果是 OpenCV 格式,将其从 BGR 颜色空间转换为 RGB 颜色空间,# 因为 PIL 库使用 RGB 颜色空间,而 OpenCV 使用 BGR 颜色空间img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))# 在 img 图片上创建一个绘图对象,用于后续绘制文本draw = ImageDraw.Draw(img)# 定义字体的格式,使用 "simsun.ttc" 字体文件,指定字体大小为 textSize,# 并设置编码为 UTF - 8 以支持中文显示fontStyle = ImageFont.truetype("simsun.ttc", textSize, encoding="utf-8")# 在指定的 position 位置,使用指定的 textColor 颜色和 fontStyle 字体绘制文本draw.text(position, text, textColor, font=fontStyle)# 将绘制好文本的 PIL 图片转换回 numpy.ndarray 类型,并将颜色空间从 RGB 转换回 BGR,# 以符合 OpenCV 的要求return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)def MAR(shape):"""计算嘴巴纵横比(Mouth Aspect Ratio):param shape: 68 个人脸特征点的坐标数组:return: 嘴巴纵横比"""# 计算嘴巴上下部分特定点之间的欧氏距离A = euclidean_distances(shape[50].reshape(1, 2), shape[58].reshape(1, 2))B = euclidean_distances(shape[51].reshape(1, 2), shape[57].reshape(1, 2))C = euclidean_distances(shape[52].reshape(1, 2), shape[56].reshape(1, 2))# 计算嘴巴左右两侧特定点之间的欧氏距离D = euclidean_distances(shape[48].reshape(1, 2), shape[54].reshape(1, 2))# 计算嘴巴纵横比,即上下部分平均距离与左右距离的比值return ((A + B + C) / 3) / Ddef MJR(shape):"""计算嘴巴与下巴宽度比(Mouth to Jaw Ratio):param shape: 68 个人脸特征点的坐标数组:return: 嘴巴与下巴宽度比"""# 计算嘴巴左右两侧特定点之间的欧氏距离M = euclidean_distances(shape[48].reshape(1, 2), shape[54].reshape(1, 2))# 计算下巴左右两侧特定点之间的欧氏距离J = euclidean_distances(shape[3].reshape(1, 2), shape[13].reshape(1, 2))# 计算嘴巴与下巴宽度比return M / Jdef MBR(shape):"""计算眉毛间距比(Mouth to Brow Ratio):param shape: 68 个人脸特征点的坐标数组:return: 眉毛间距比"""# 计算左右眉毛内侧特定点之间的欧氏距离F = euclidean_distances(shape[21].reshape(1, 2), shape[22].reshape(1, 2))# 计算左右眉毛外侧特定点之间的欧氏距离I = euclidean_distances(shape[17].reshape(1, 2), shape[26].reshape(1, 2))# 计算眉毛间距比return F / I# 打开默认摄像头,用于实时视频捕获
cap = cv2.VideoCapture(0)
# 加载预训练的 68 点人脸特征预测模型
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
# 创建人脸检测器对象
detector = dlib.get_frontal_face_detector()while True:# 从摄像头读取一帧视频ret, frame = cap.read()# 水平翻转视频帧,使画面看起来更自然frame = cv2.flip(frame, 1)# 如果读取失败,跳出循环if ret is None:break# 检测视频帧中的人脸faces = detector(frame, 0)for face in faces:# 预测人脸的 68 个特征点shape = predictor(frame, face)# 将特征点转换为 numpy 数组shape = np.array([[p.x, p.y] for p in shape.parts()])# 计算嘴巴纵横比mar = MAR(shape)# 计算嘴巴与下巴宽度比mjr = MJR(shape)# 计算眉毛间距比mbr = MBR(shape)# 初始化表情结果为正常result = '正常'# 打印各个比值print("mar", mar, '\tmjr', mjr, 'mbr', mbr)# 根据比值判断表情if mar > 0.5:result = "大笑"elif mjr > 0.45:result = '微笑'elif mbr < 0.15:result = '生气'# 计算嘴巴轮廓的凸包mouthHull = cv2.convexHull(shape[48:61])# 在视频帧上添加中文表情结果frame = cv2AddChineseText(frame, result, mouthHull[0, 0])# 在视频帧上绘制嘴巴轮廓cv2.drawContours(frame, [mouthHull], -1, (0, 255, 0), 1)# 显示处理后的视频帧cv2.imshow('img', frame)# 等待用户按键,等待时间为 1 毫秒key = cv2.waitKey(1)# 如果用户按下 ESC 键(ASCII 码为 27),跳出循环if key == 27:break
# 释放摄像头资源
cap.release()
# 关闭所有 OpenCV 窗口
cv2.destroyAllWindows()

在这里插入图片描述

dlib库——人脸应用实例——疲劳检测

在这里插入图片描述

当闭眼时间长时,发出危险警告。

代码:

import numpy as np
import cv2
import dlib
from sklearn.metrics.pairwise import euclidean_distances
from PIL import Image, ImageDraw, ImageFontdef cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=20):""" 向图片中添加中文 """# 判断输入的 img 是否为 OpenCV 格式的图片(即 numpy.ndarray 类型)if isinstance(img, np.ndarray):# 如果是 OpenCV 格式,将其从 BGR 颜色空间转换为 RGB 颜色空间,# 因为 PIL 库使用 RGB 颜色空间,而 OpenCV 使用 BGR 颜色空间img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))# 在 img 图片上创建一个绘图对象,用于后续绘制文本draw = ImageDraw.Draw(img)# 定义字体的格式,使用 "simsun.ttc" 字体文件,指定字体大小为 textSize,# 并设置编码为 UTF - 8 以支持中文显示fontStyle = ImageFont.truetype("simsun.ttc", textSize, encoding="utf-8")# 在指定的 position 位置,使用指定的 textColor 颜色和 fontStyle 字体绘制文本draw.text(position, text, textColor, font=fontStyle)# 将绘制好文本的 PIL 图片转换回 numpy.ndarray 类型,并将颜色空间从 RGB 转换回 BGR,# 以符合 OpenCV 的要求return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)def eye_aspect_ratio(eye):"""计算眼睛的纵横比(Eye Aspect Ratio,EAR):param eye: 眼睛的特征点坐标数组:return: 眼睛的纵横比"""# 计算眼睛垂直方向上的距离A = euclidean_distances(eye[1].reshape(1, 2), eye[5].reshape(1, 2))B = euclidean_distances(eye[2].reshape(1, 2), eye[4].reshape(1, 2))# 计算眼睛水平方向上的距离C = euclidean_distances(eye[0].reshape(1, 2), eye[3].reshape(1, 2))# 计算眼睛纵横比,即垂直方向平均距离与水平距离的比值ear = ((A + B) / 2) / Creturn eardef drawEye(eye):"""在图像上绘制眼睛的轮廓:param eye: 眼睛的特征点坐标数组"""# 计算眼睛特征点的凸包eyeHull = cv2.convexHull(eye)# 在图像 frame 上绘制眼睛的轮廓cv2.drawContours(frame, [eyeHull], -1, (0, 255, 0), 1)# 初始化计数器,用于记录眼睛闭合的帧数
COUNTER = 0
# 创建人脸检测器对象,用于检测图像中的人脸
detector = dlib.get_frontal_face_detector()
# 打开默认摄像头,用于实时视频捕获
cap = cv2.VideoCapture(0)
# 加载预训练的 68 点人脸特征预测模型
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')while True:# 从摄像头读取一帧视频ret, frame = cap.read()# 水平翻转视频帧,使画面看起来更自然frame = cv2.flip(frame, 1)# 如果读取失败,跳出循环if ret is None:break# 检测视频帧中的人脸faces = detector(frame, 0)for face in faces:# 预测人脸的 68 个特征点shape = predictor(frame, face)# 将特征点转换为 numpy 数组shape = np.array([[p.x, p.y] for p in shape.parts()])# 提取右眼的特征点rightEye = shape[36:42]# 提取左眼的特征点leftEye = shape[42:48]# 计算右眼的纵横比rightEAR = eye_aspect_ratio(rightEye)# 计算左眼的纵横比leftEAR = eye_aspect_ratio(leftEye)# 计算左右眼纵横比的平均值ear = (leftEAR + rightEAR) / 2# 如果眼睛纵横比小于 0.3,认为眼睛处于闭合状态if ear < 0.3:# 闭合帧数计数器加 1COUNTER += 1# 如果闭合帧数超过 50 帧,认为可能存在危险情况if COUNTER >= 50:# 在视频帧上添加中文提示信息frame = cv2AddChineseText(frame, "!!!危险!!!", (250, 250))else:# 如果眼睛处于睁开状态,将闭合帧数计数器重置为 0COUNTER = 0# 绘制左眼的轮廓drawEye(leftEye)# 绘制右眼的轮廓drawEye(rightEye)# 格式化眼睛纵横比信息,保留两位小数info = "EAR:{:.2f}".format(ear[0][0])# 在视频帧上添加眼睛纵横比信息frame = cv2AddChineseText(frame, info, (0, 30))# 显示处理后的视频帧cv2.imshow('Frame', frame)# 等待用户按键,等待时间为 1 毫秒key = cv2.waitKey(1)# 如果用户按下 ESC 键(ASCII 码为 27),跳出循环if key == 27:break# 释放摄像头资源
cap.release()
# 关闭所有 OpenCV 窗口
cv2.destroyAllWindows()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI大模型】DeepSeek + Kimi 高效制作PPT实战详解

目录 一、前言 二、传统 PPT 制作问题 2.1 传统方式制作 PPT 2.2 AI 大模型辅助制作 PPT 2.3 适用场景对比分析 2.4 最佳实践与推荐 三、DeepSeek Kimi 高效制作PPT操作实践 3.1 Kimi 简介 3.2 DeepSeek Kimi 制作PPT优势 3.2.1 DeepSeek 优势 3.2.2 Kimi 制作PPT优…

【ESP-ADF】在 VSCode 安装 ESP-ADF 注意事项

1.检查网络 如果您在中国大陆安装&#xff0c;请使用魔法上网&#xff0c;避免无法 clone ESP-ADF 仓库。 2.VSCode 安装 ESP-ADF 在 VSCode 左侧活动栏选择 ESP-IDF:explorer&#xff0c;展开 advanced 并点击 Install ESP-ADF 然后会出现选择 ESP-ADF 安装目录。 如果出现…

关于2023新版PyCharm的使用

考虑到大家AI编程的需要&#xff0c;建议大家安装新版Python解释器和新版PyCharm&#xff0c;下载地址都可以官网进行&#xff1a; Python&#xff1a;Download Python | Python.org&#xff08;可以根据需要自行选择&#xff0c;建议选择3.11&#xff0c;保持交流版本一致&am…

轻松部署 Stable Diffusion WebUI 并实现局域网共享访问:解决 Conda Python 版本不为 3.10.6 的难题

这篇博文主要为大家讲解关于sd webui的部署问题&#xff0c;大家有什么不懂的可以随时问我&#xff0c;如果没有及时回复&#xff0c;可联系&#xff1a;1198965922 如果后续大家需要了解怎么用代码调用部署好的webui的接口&#xff0c;可以在评论区留言哦&#xff0c;博主可以…

springBoot集成emqx 实现mqtt消息的发送订阅

介绍 我们可以想象这么一个场景&#xff0c;我们java应用想要采集到电表a的每小时的用电信息&#xff0c;我们怎么拿到电表的数据&#xff1f;一般我们会想 直接 java 后台发送请求给电表&#xff0c;然后让电表返回数据就可以了&#xff0c;事实上&#xff0c;我们java应用发…

vue Table 表格自适应窗口高度,表头固定

当表格内纵向内容过多时&#xff0c;可选择固定表头。 代码很简单&#xff0c;其实就是在table 里面定一个 height 属性即可。 <template><el-table:data"tableData"height"250"borderstyle"width: 100%"><el-table-columnprop…

【ATXServer2】Android无法正确显示手机屏幕

文章目录 现象原因分析与解决排查手机内部minicap 解决minicap问题查看移动端Android SDK版本查看minicap支持版本单次方案多次方案 最后问题-如何支持Android SDK 32 现象 原因分析与解决 由于atxserver2在与Android动终端的链接过程中使用了agent&#xff1a;atxserver2-and…

【设计模式】单例模式|饿汉模式|懒汉模式|指令重排序

目录 1.什么是单例模式&#xff1f; 2.如何保证单例&#xff1f; 3.两种写法 &#xff08;1&#xff09;饿汉模式&#xff08;早创建&#xff09; &#xff08;2&#xff09;懒汉模式&#xff08;缓执行&#xff0c;可能不执行&#xff09; 4.应用场景 &#x1f525;5.多…

RocketMQ顺序消费机制

RocketMQ的顺序消费机制通过生产端和消费端的协同设计实现&#xff0c;其核心在于局部顺序性&#xff0c;即保证同一队列&#xff08;MessageQueue&#xff09;内的消息严格按发送顺序消费。以下是详细机制解析及关键源码实现&#xff1a; 一、顺序消费的核心机制 1. 生产端路…

【JavaEE】-- 多线程(初阶)4

文章目录 8.多线程案例8.1 单例模式8.1.1 饿汉模式8.1.2 懒汉模式 8.2 阻塞队列8.2.1 什么是阻塞队列8.2.2 生产者消费者模型8.2.3 标准库中的阻塞队列8.2.4 阻塞队列的应用场景8.2.4.1 消息队列 8.2.5 异步操作8.2.5 自定义实现阻塞队列8.2.6 阻塞队列--生产者消费者模型 8.3 …

【C++设计模式】第四篇:建造者模式(Builder)

注意&#xff1a;复现代码时&#xff0c;确保 VS2022 使用 C17/20 标准以支持现代特性。 分步骤构造复杂对象&#xff0c;实现灵活装配 1. 模式定义与用途 核心目标&#xff1a;将复杂对象的构建过程分离&#xff0c;使得同样的构建步骤可以创建不同的表示形式。 常见场景&am…

EP 架构:未来主流方向还是特定场景最优解?

DeepSeek MoE架构采用跨节点专家并行&#xff08;EP&#xff09;架构&#xff0c;在提升推理系统性能方面展现出巨大潜力。这一架构在发展进程中也面临诸多挑战&#xff0c;其未来究竟是会成为行业的主流方向&#xff0c;还是仅适用于特定场景&#xff0c;成为特定领域的最优解…

[密码学实战]Java实现国密(SM2)密钥协商详解:原理、代码与实践

一、代码运行结果 二、国密算法与密钥协商背景 2.1 什么是国密算法&#xff1f; 国密算法是由中国国家密码管理局制定的商用密码标准&#xff0c;包括&#xff1a; SM2&#xff1a;椭圆曲线公钥密码算法&#xff08;非对称加密/签名/密钥协商&#xff09;SM3&#xff1a;密码…

动漫短剧开发公司,短剧小程序搭建快速上线

在当今快节奏的生活里&#xff0c;人们的娱乐方式愈发多元&#xff0c;而动漫短剧作为新兴娱乐形式&#xff0c;正以独特魅力迅速崛起&#xff0c;成为娱乐市场的耀眼新星。近年来&#xff0c;动漫短剧市场呈爆发式增长&#xff0c;吸引众多创作者与观众目光。 从市场规模来看…

Python测试框架Pytest的参数化

上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不断攀升。 在实际工作中&#xff0c;许多测试用例都是类似的重复&#xff0c;一个个写最后代码会显得很冗余。这里&#xff0c;我们来了解一下pytest.mark.parametrize装饰器&…

开发博客系统

前言 准备工作 数据库表分为实体表和关系表 第一&#xff0c;建数据库表 然后导入前端页面 创建公共模块 就是统一返回值&#xff0c;异常那些东西 自己造一个自定义异常 普通类 mapper 获取全部博客 我们只需要返回id&#xff0c;title&#xff0c;content&#xff0c;us…

20250304学习记录

第一部分&#xff0c;先来了解一下各种论文期刊吧&#xff0c;毕竟也是这把岁数了&#xff0c;还什么都不懂呢 国际期刊&#xff1a; EI收集的主要有两种&#xff0c; JA&#xff1a;EI源刊 CA&#xff1a;EI会议 CPCI也叫 ISTP 常说的SCI分区是指&#xff0c;JCR的一区、…

2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)

首先到官网上下载安装包&#xff1a;http://www.mysql.com 点击下载&#xff0c;拉到最下面&#xff0c;点击社区版下载 windows用户点击下面适用于windows的安装程序 点击下载&#xff0c;网络条件好可以点第一个&#xff0c;怕下着下着断了点第二个离线下载 双击下载好的安装…

汽车智能钥匙中PKE低频天线的作用

PKE&#xff08;Passive Keyless Entry&#xff09;即被动式无钥匙进入系统&#xff0c;汽车智能钥匙中PKE低频天线在现代汽车的智能功能和安全保障方面发挥着关键作用&#xff0c;以下是其具体作用&#xff1a; 信号交互与身份认证 低频信号接收&#xff1a;当车主靠近车辆时…

uiautomatorviewer定位元素报Unexpected ... UI hierarchy

发现问题 借鉴博客 Unexpected error while obtaining UI hierarchy android app UI自动化-元素定位辅助工具 Unexpected error while obtaining UI hierarchy&#xff1a;使用uiautomatorviewer定位元素报错 最近在做安卓自动化,安卓自动化主要工作之一就是获取UI树 app端获…