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 相关文章推荐
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
Python 装饰器使用详解
Jul 29 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
python实现彩色图转换成灰度图
Jan 15 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
python opencv实现证件照换底功能
Aug 19 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
keras K.function获取某层的输出操作
Jun 29 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Python必备技巧之函数的使用详解
Python批量解压&压缩文件夹的示例代码
Apr 04 #Python
Python调用腾讯API实现人脸身份证比对功能
Python字符串常规操作小结
Anaconda安装pytorch和paddle的方法步骤
You might like
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
利用JS实现数字增长
2016/07/28 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
用js简单提供增删改查接口
2019/05/12 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python实现从字典中删除元素的方法
2015/05/04 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
python flask中静态文件的管理方法
2018/03/20 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python最小二乘法矩阵
2019/01/02 Python
QML实现钟表效果
2020/06/02 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
致铅球运动员加油稿
2014/02/13 职场文书
2014年中秋寄语
2014/08/11 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2015年资料员工作总结
2015/04/25 职场文书
JS class语法糖的深入剖析
2022/07/07 Javascript