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打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
python使用Tesseract库识别验证
Mar 21 Python
python写入已存在的excel数据实例
May 03 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
Python异常处理例题整理
Jul 07 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
解析python的局部变量和全局变量
Aug 15 Python
Python+Redis实现布隆过滤器
Dec 08 Python
Python基于numpy模块实现回归预测
May 14 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Python必备技巧之函数的使用详解
Python批量解压&压缩文件夹的示例代码
Apr 04 #Python
Python调用腾讯API实现人脸身份证比对功能
Python字符串常规操作小结
Anaconda安装pytorch和paddle的方法步骤
You might like
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
JavaScript实用技巧(一)
2010/08/16 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
小程序表单认证布局及验证详解
2020/06/19 Javascript
js实现日历
2020/11/07 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
Python AES加密实例解析
2018/01/18 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Python如何给函数库增加日志功能
2020/08/04 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
Python读写Excel表格的方法
2021/03/02 Python
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
研究生个人学年总结
2015/02/14 职场文书