python疲劳驾驶困倦低头检测功能的实现


Posted in Python onApril 04, 2022

python疲劳驾驶困倦低头检测,代码如下所示:

def get_head_pose(shape):  # 头部姿态估计
    # (像素坐标集合)填写2D参考点
    # 17左眉左上角/21左眉右角/22右眉左上角/26右眉右上角/36左眼左上角/39左眼右上角/42右眼左上角/
    # 45右眼右上角/31鼻子左上角/35鼻子右上角/48左上角/54嘴右上角/57嘴中央下角/8下巴角
    image_pts = np.float32([shape[17], shape[21], shape[22], shape[26], shape[36],
                            shape[39], shape[42], shape[45], shape[31], shape[35],
                            shape[48], shape[54], shape[57], shape[8]])
    # solvePnP计算姿势——求解旋转和平移矩阵:
    # rotation_vec表示旋转矩阵,translation_vec表示平移矩阵,cam_matrix与K矩阵对应,dist_coeffs与D矩阵对应。
    _, rotation_vec, translation_vec = cv2.solvePnP(object_pts, image_pts, cam_matrix, dist_coeffs)
    # projectPoints重新投影误差:原2d点和重投影2d点的距离(输入3d点、相机内参、相机畸变、r、t,输出重投影2d点)
    reprojectdst, _ = cv2.projectPoints(reprojectsrc, rotation_vec, translation_vec, cam_matrix, dist_coeffs)
    reprojectdst = tuple(map(tuple, reprojectdst.reshape(8, 2)))  # 以8行2列显示
 
    # 计算欧拉角calc euler angle
    rotation_mat, _ = cv2.Rodrigues(rotation_vec)  # 罗德里格斯公式(将旋转矩阵转换为旋转向量)
    pose_mat = cv2.hconcat((rotation_mat, translation_vec))  # 水平拼接,vconcat垂直拼接
    # decomposeProjectionMatrix将投影矩阵分解为旋转矩阵和相机矩阵
    _, _, _, _, _, _, euler_angle = cv2.decomposeProjectionMatrix(pose_mat)
    pitch, yaw, roll = [math.radians(_) for _ in euler_angle]
    pitch = math.degrees(math.asin(math.sin(pitch)))
    roll = -math.degrees(math.asin(math.sin(roll)))
    yaw = math.degrees(math.asin(math.sin(yaw)))
    print('pitch:{}, yaw:{}, roll:{}'.format(pitch, yaw, roll))
    return reprojectdst, euler_angle  # 投影误差,欧拉角
def eye_aspect_ratio(eye):
    # 垂直眼标志(X,Y)坐标
    A = dist.euclidean(eye[1], eye[5])  # 计算两个集合之间的欧式距离
    B = dist.euclidean(eye[2], eye[4])
    # 计算水平之间的欧几里得距离
    # 水平眼标志(X,Y)坐标
    C = dist.euclidean(eye[0], eye[3])
    # 眼睛长宽比的计算
    ear = (A + B) / (2.0 * C)
    # 返回眼睛的长宽比
    return ear
def mouth_aspect_ratio(mouth):  # 嘴部
    A = np.linalg.norm(mouth[2] - mouth[9])  # 51, 59
    B = np.linalg.norm(mouth[4] - mouth[7])  # 53, 57
    C = np.linalg.norm(mouth[0] - mouth[6])  # 49, 55
    mar = (A + B) / (2.0 * C)
    return mar

python疲劳驾驶困倦低头检测功能的实现

python疲劳驾驶困倦低头检测

https://download.csdn.net/download/babyai996/85068772

到此这篇关于python疲劳驾驶困倦低头检测功能的实现的文章就介绍到这了,更多相关python疲劳驾驶检测内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现数通设备tftp备份配置文件示例
Apr 02 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
详解Python中的日志模块logging
Jun 19 Python
python3 shelve模块的详解
Jul 08 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
Python实现中值滤波去噪方式
Dec 18 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
python palywright库基本使用
Jan 21 Python
Python函数中的不定长参数相关知识总结
Jun 24 Python
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Python必备技巧之函数的使用详解
Python批量解压&压缩文件夹的示例代码
Apr 04 #Python
Python调用腾讯API实现人脸身份证比对功能
Python字符串常规操作小结
Anaconda安装pytorch和paddle的方法步骤
You might like
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
js tab效果的实现代码
2009/12/26 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
对python判断是否回文数的实例详解
2019/02/08 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
delegate与普通函数的区别
2014/01/22 面试题
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
写字楼租赁意向书
2014/07/30 职场文书
教师工作失职检讨书
2014/09/18 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
python实现过滤敏感词
2021/05/08 Python
python 远程执行命令的详细代码
2022/02/15 Python