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 重新投影誤差:外匯跟單gendan5.com原 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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2886467/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 人眼疲勞檢測之opencv人眼檢測xml說明OpenCVXML
- 密碼疲勞密碼
- JavaScript 疲勞症JavaScript
- 如何克服 JavaScript 框架疲勞?JavaScript框架
- [計算機視覺]人臉應用:人臉檢測、人臉對比、五官檢測、眨眼檢測、活體檢測、疲勞檢測計算機視覺
- 坦然面對:應對前端疲勞前端
- 出現程式設計疲勞?千萬別糾結程式設計
- 勞保防護用品穿戴檢測系統
- 一個治癒 JavaScript 疲勞的學習計劃JavaScript
- 如何在疲勞的JS世界中持續學習JS
- JavaScript 疲勞終極指南:我們行業的真相JavaScript行業
- 打工人的疲勞和壓力,別人不懂 AI 懂AI
- 程式設計師擺脫疲勞的 11 個建議程式設計師
- 大平臺為治癒 “巨頭疲勞症” 紛紛推出心機小功能,可這真的能解渴麼?
- 中科信ANSYS高階疲勞分析技術培訓課程
- PE檔案檢測DOS頭\NT頭
- 人工智慧如何防止資料洩露後的疲勞現象人工智慧
- 2021年全球最疲勞國家指數(附原資料表)
- 無人駕駛之車輛檢測與跟蹤
- MIUI 12帶有閱讀模式,可防止小米使用者的眼睛疲勞UI模式
- 避免警報疲勞:每個 K8s 工程團隊的 8 個技巧K8S
- 安全帽佩戴檢測攝像頭
- AI每日精選:滴滴嘗試應用AI技術分析司機的疲勞狀態AI
- 多年前端開發程式設計師論述:這些必然的前端疲勞前端程式設計師
- 優質遊戲廣告能抗9周不疲勞!想買量需瞭解常識遊戲
- 【日記】今天好睏(407 字)
- 避免自動駕駛事故,CV領域如何檢測物理攻擊?自動駕駛
- 自動駕駛系列(二)——環境感知之行人檢測技術自動駕駛
- php批量檢測並去除BOM頭的程式碼PHP
- 自動駕駛系列(一)——環境感知之車輛檢測技術自動駕駛
- 如何利用Python去檢測一下身邊是否藏有針孔攝像頭?Python
- 頭條、油條商標有多像?Python檢測發現相似度高達98.4%!Python
- python檢測網路延遲Python
- 檢測根目錄帶bom頭資訊的檔案
- 基於頭肩部檢測的過線客流統計
- 程式設計師,你的薪資低於勞動價值嗎?程式設計師
- 程式設計師 你的薪資低於勞動價值嗎?程式設計師
- 《應用心理學雜誌》:研究稱工作中的“微休息”可以提高參與度 減輕疲勞