疲勞檢測 (四) 基於landmark的姿態檢測

2021-10-20 00:27:43 字數 2280 閱讀 5256

1)定義乙個具有n個關鍵點的3d臉部模型,以6個關鍵點的3d臉部模型為例(左眼角,右眼角,鼻尖,左嘴角,右嘴角,下頜):

2)採用人臉檢測以及面部關鍵點檢測得到2d人臉關鍵點;

3)採用opencv的solvepnp函式解出旋轉向量;

k = [6.5308391993466671e+002, 0.0, 3.1950000000000000e+002,

0.0, 6.5308391993466671e+002, 2.3950000000000000e+002,

0.0, 0.0, 1.0]

d = [7.0834633684407095e-002, 6.9140193737175351e-002, 0.0, 0.0, -1.3073460323689292e+000]

# # 相機內參矩陣

camera_matrix = np.array(k).reshape(3, 3).astype(np.float32)

# # 相機畸變係數

dist_coeffs = np.array(d).reshape(5, 1).astype(np.float32)

(success, rotation_vector, translation_vector) = cv2.solvepnp(model_points, image_points, camera_matrix,dist_coeffs, flags=4) # cv2.cv_iterative

4)將旋轉向量轉換為尤拉角;

# calculate rotation angles

theta = cv2.norm(rotation_vector, cv2.norm_l2)

# transformed to quaterniond

w = math.cos(theta / 2)

x = math.sin(theta / 2) * rotation_vector[0][0] / theta

y = math.sin(theta / 2) * rotation_vector[1][0] / theta

z = math.sin(theta / 2) * rotation_vector[2][0] / theta

ysqr = y * y

# pitch (x-axis rotation)

t0 = 2.0 * (w * x + y * z)

t1 = 1.0 - 2.0 * (x * x + ysqr)

pitch = math.atan2(t0, t1)

# yaw (y-axis rotation)

t2 = 2.0 * (w * y - z * x)

if t2 > 1.0:

t2 = 1.0

if t2 < -1.0:

t2 = -1.0

yaw = math.asin(t2)

# roll (z-axis rotation)

t3 = 2.0 * (w * z + x * y)

t4 = 1.0 - 2.0 * (ysqr + z * z)

roll = math.atan2(t3, t4)

# print('pitch:{}, yaw:{}, roll:{}'.format(pitch, yaw, roll))

# 單位轉換:將弧度轉換為度

# y = int((pitch / math.pi) * 180)

# x = int((yaw / math.pi) * 180)

# z = int((roll / math.pi) * 180)

(c++:計算旋轉角度/人臉轉正)

基於landmark的疲勞檢測

經查閱相關文獻,疲勞在人體面部表情中表現出大致三個型別 打哈欠 嘴巴張大且相對較長時間保持這一狀態 眨眼 或眼睛微閉,此時眨眼次數增多,且眨眼速度變慢 點頭 瞌睡點頭 1 首先是檢測眨眼,可以通過landmark點的標號直接定位眼睛位置,經實驗驗證,該一系列的點能夠準確定位。下面重點分析一下眼部,6...

疲勞駕駛監測方案 疲勞駕駛檢測方法

疲勞駕駛檢測方法 疲勞駕駛是指駕駛員在長時間連續駕車後,產生心理機能和生理機能的失調,出現諸如視線模糊 反應遲鈍 動作呆板 腰痠背疼 駕駛能力下降等現象。疲勞駕駛的誘因 疲勞駕駛是駕駛員在人 車 環境這個大系統中產生的。駕駛過程中,駕駛員需要時刻接收相關資訊,並實時地對之進行判斷,做出相關決定和動作...

疲勞駕駛監測方案 一種疲勞駕駛檢測方法

一種疲勞駕駛檢測方法 專利摘要 本發明公開了一種疲勞駕駛檢測方法,屬於汽車安全駕駛領域,通過採集駕駛員的行為指標 主要為方向盤資料 駕駛時間和駕駛車速 進行資訊預處理,得到疲勞生理引數作為檢測指標變數,然後利用疲勞指標變數對bp神經網路進行訓練建立相應的疲勞檢測網路模型,利用該模型進行疲勞檢測。本發...