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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
Python解析xml中dom元素的方法
Mar 12 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
python实现控制台打印的方法
Jan 12 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
Python根据服务获取端口号的方法
Sep 25 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 Python
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Python必备技巧之函数的使用详解
Python批量解压&压缩文件夹的示例代码
Apr 04 #Python
Python调用腾讯API实现人脸身份证比对功能
Python字符串常规操作小结
Anaconda安装pytorch和paddle的方法步骤
You might like
Yii框架响应组件用法实例分析
2019/09/04 PHP
让元素在网页中可拖动示例代码
2013/08/13 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
python发送邮件接收邮件示例分享
2014/01/21 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
客服专员岗位职责范本
2013/11/29 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
升学宴家长致辞
2015/07/27 职场文书
追悼会家属答谢词
2015/09/29 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
redis数据一致性的实现示例
2022/03/18 Redis