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的即时标记项目练习笔记
Sep 18 Python
python轻松实现代码编码格式转换
Mar 26 Python
多版本Python共存的配置方法
May 22 Python
如何高效使用Python字典的方法详解
Aug 31 Python
如何在Python中实现goto语句的方法
May 18 Python
python psutil模块使用方法解析
Aug 01 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
FFrpc python客户端lib使用解析
Aug 24 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
怎么快速自学python
Jun 22 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Python必备技巧之函数的使用详解
Python批量解压&压缩文件夹的示例代码
Apr 04 #Python
Python调用腾讯API实现人脸身份证比对功能
Python字符串常规操作小结
Anaconda安装pytorch和paddle的方法步骤
You might like
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
php导出word格式数据的代码实例
2013/11/25 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
2013/04/23 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
BootStrap tab选项卡使用小结
2020/08/09 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
介绍Python中的__future__模块
2015/04/27 Python
python编程开发之日期操作实例分析
2015/11/13 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
利用python画一颗心的方法示例
2017/01/31 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
Python 面试中 8 个必考问题
2018/11/16 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
python批量生成条形码的示例
2020/10/10 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
中级会计职业生涯规划书
2014/03/01 职场文书
书法大赛策划方案
2014/06/04 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
初婚未育证明样本
2015/06/18 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
python和anaconda的区别
2022/05/06 Python