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连接SQLServer2000的方法详解
Apr 19 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
深入浅析python 中的匿名函数
May 21 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python 切换root 执行命令的方法
Jan 19 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
python爬虫之快速对js内容进行破解
Jul 09 Python
python模拟实现斗地主发牌
Jan 07 Python
如何在 Django 模板中输出 "{{"
Jan 24 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
Python将字典转换为XML的方法
Aug 01 Python
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Python必备技巧之函数的使用详解
Python批量解压&压缩文件夹的示例代码
Apr 04 #Python
Python调用腾讯API实现人脸身份证比对功能
Python字符串常规操作小结
Anaconda安装pytorch和paddle的方法步骤
You might like
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
浅谈js闭包理解
2019/04/01 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
Flask之flask-script模块使用
2018/07/26 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
python的常用模块之collections模块详解
2018/12/06 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
Structs界面控制层技术
2013/10/11 面试题
《小小竹排画中游》教学反思
2014/02/26 职场文书
倡议书格式范文
2014/04/14 职场文书
公务员年度考核评语
2014/12/31 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
倡议书格式及范文
2015/04/29 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android