Kinect V2开发(7)测量骨骼点高度以及骨骼角度

您所在的位置:网站首页 人体骨架3米 Kinect V2开发(7)测量骨骼点高度以及骨骼角度

Kinect V2开发(7)测量骨骼点高度以及骨骼角度

2024-07-08 12:32| 来源: 网络整理| 查看: 265

Kinect得到的是镜面图像 这里写图片描述

骨骼角度测量 通过Kinect获取到关节的三维坐标点后可以根据向量点积或叉积公式计算出关节角度 在DirectXMath数学库中也有现成的计算向量夹角的函数XMVector3AngleBetweenVectors: Namespace Use DirectX Header DirectXMath.h

XMVECTOR XMVector3AngleBetweenVectors( [in] XMVECTOR V1, [in] XMVECTOR V2 );//返回向量V1、V2间的夹角[angle, angle,angle, angle],单位为弧度 DOUBLE CBodyBasics::Angle(const DirectX::XMVECTOR* vec, JointType jointA, JointType jointB, JointType jointC) { double angle = 0.0; XMVECTOR vBA = XMVectorSubtract(vec[jointB], vec[jointA]); XMVECTOR vBC = XMVectorSubtract(vec[jointB], vec[jointC]); XMVECTOR vAngle = XMVector3AngleBetweenVectors(vBA, vBC); angle = XMVectorGetX(vAngle) * 180.0 * XM_1DIVPI; // XM_1DIVPI: An optimal representation of 1 / π return angle; }

在获取关节信息后调用,这里测量的是 右肘和右肩连线 与右肘和右腕连线之间的角度

const DirectX::XMVECTOR* vec = filterKinect.GetFilteredJoints(); // Retrive Filtered Joints double angle = Angle(vec, JointType_WristRight, JointType_ElbowRight, JointType_ShoulderRight); // Get ElbowRight joint angle char s[10]; sprintf_s(s, "%.0f", angle); string strAngleInfo = s; putText(BodyImg, strAngleInfo, cvPoint(0, 50), CV_FONT_HERSHEY_COMPLEX, 0.5, cvScalar(0, 0, 255)); // 屏幕上显示角度信息

这里写图片描述

高度测量 地面检测的难度比较大,在IBodyFrame类里面有一个get_FloorClipPlane方法,函数的参数是vector4 *floorClipPlane,返回值是HRESULT类型。vector4结构体里有4个float类型的数据成员,分别是x,y,z,w,这4个参数即为地面方程的系数(x,y,z)和常数项(w),将这四个数分别赋值给A,B,C,D,则可得地面方程为 A·x+B·y+C·z+D=0 此处的地面方程是在Kinect的深度相机坐标系下得到的,常数项表示Kinect的深度相机的中心点到地面的距离。知道骨骼点的三维坐标和地面方程,则可计算关节点离地面的距离 height = 这里写图片描述

Vector4 vFloorClipPlane; float A, B, C, D; float x, y, z; float baseH; myBodyFrame->get_FloorClipPlane(&vFloorClipPlane); A = vFloorClipPlane.x; B = vFloorClipPlane.y; C = vFloorClipPlane.z; D = vFloorClipPlane.w; x = joints[JointType_SpineBase].Position.X; y = joints[JointType_SpineBase].Position.Y; z = joints[JointType_SpineBase].Position.Z; baseH = (A*x + B*y + C*z + D) / sqrt(pow(A, 2) + pow(B, 2) + pow(C, 2)); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3