python疲劳驾驶困倦低头检测功能怎么实现
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,本篇内容主要讲解"python疲劳驾驶困倦低头检测功能怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python疲劳驾驶困倦低头检测功能怎么实现"
千家信息网最后更新 2025年01月30日python疲劳驾驶困倦低头检测功能怎么实现
本篇内容主要讲解"python疲劳驾驶困倦低头检测功能怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python疲劳驾驶困倦低头检测功能怎么实现"吧!
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 eardef 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疲劳驾驶困倦低头检测功能怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
矩阵
左上角
投影
疲劳
检测
驾驶
功能
坐标
水平
相机
之间
内容
右眼
左眼
标志
眼睛
误差
鼻子
欧拉
学习
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发几个环境
打印服务器diy
web服务器工作流程
买了云服务器需要买流量吗
中国网络安全对抗赛
smc 3d 2d数据库
怎么给未转变者服务器更新
大文件用什么服务器好
中间数据库管理员
方舟进不了服务器
江苏专业的财务软件开发费用
数据库集群技术教程
汕头智能软件开发联系方式
服务器多重网络连接安全吗
厦门软件开发中小型企业
监控网络安全设备
方舟手游服务器怎么获得
北京互金新融科技软件开发
商丘政务软件开发公司
无线打印服务器如何设置
服务器架设书籍
购买软件开发解决方案
vs生成数据库连接串
安徽企业党建软件开发
数据库开发认证
服务器巡检目的
网络安全保障中心是干什么的
网络安全保护权益法
网络安全法谁发行的
java数据库加密配置