python 使用地标计算欧拉角的头部姿势
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 使用地标计算欧拉角的头部姿势相关的知识,希望对你有一定的参考价值。
retval, rvec, tvec = cv2.solvePnP(landmarks_3D,
landmarks_2D,
camera_matrix,
camera_distortion)
if not calibrated_fg:
bias_rvec = rvec
bias_rvec_matrix = cv2.Rodrigues(bias_rvec)[0]
calibrated_fg = True
raw_rvec_matrix = cv2.Rodrigues(rvec)[0]
rvec_matrix = np.dot(np.linalg.inv(bias_rvec_matrix),
raw_rvec_matrix)
head_pose = np.hstack((rvec_matrix, tvec))
R = np.vstack((head_pose, [0, 0, 0, 1]))
sy = math.sqrt(R[0, 0] * R[0, 0] + R[1, 0] * R[1, 0])
singular = sy < 1e-6
if not singular:
x = math.atan2(R[2, 1], R[2, 2])
y = math.atan2(-R[2, 0], sy)
z = math.atan2(R[1, 0], R[0, 0])
else:
x = math.atan2(-R[1, 2], R[1, 1])
y = math.atan2(-R[2, 0], sy)
z = 0
euler_angles = np.array([x, y, z]) / np.pi * 180
roll_predicted = euler_angles[0]
pitch_predicted = euler_angles[1]
yaw_predicted = euler_angles[2]
print("Frame Index: %d Landmark-based Estimated "
"[roll, pitch, yaw] ..... [%f\t%f\t%f]\n" %
(frame_num, roll_predicted, pitch_predicted, yaw_predicted))
txt_out.write(str(frame_num) + '\t%f\t%f\t%f\n' % (
yaw_predicted, pitch_predicted, roll_predicted))
以上是关于python 使用地标计算欧拉角的头部姿势的主要内容,如果未能解决你的问题,请参考以下文章
在给定欧拉角的情况下,在 Blender Python 中获取定向光线上的 3D 点
如何在 Dlib C++ 中获取头部姿势估计的 3D 坐标轴
欧拉角与四元数转换——编程
欧拉角的详解
unity没有提供四元数到欧拉角的转换函数吗
我的OpenGL学习进阶之旅关于欧拉角旋转顺序旋转矩阵四元数等知识的整理