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图像处理之反色实现方法
May 30 Python
python实现的守护进程(Daemon)用法实例
Jun 02 Python
解读Django框架中的低层次缓存API
Jul 24 Python
python二分查找算法的递归实现方法
May 12 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
Python微信操控itchat的方法
May 31 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
python中setuptools的作用是什么
Jun 19 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Python必备技巧之函数的使用详解
Python批量解压&压缩文件夹的示例代码
Apr 04 #Python
Python调用腾讯API实现人脸身份证比对功能
Python字符串常规操作小结
Anaconda安装pytorch和paddle的方法步骤
You might like
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
JavaScript触发器详解
2007/03/10 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python中正则表达式的用法实例汇总
2014/08/18 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
python中dict()的高级用法实现
2019/11/13 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
摄影实习自我鉴定
2013/09/20 职场文书
餐饮加盟计划书
2014/01/10 职场文书
会议邀请书范文
2014/02/02 职场文书
单位接收函范文
2015/01/30 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python