Kinect开发笔记(一)

Kinect开发笔记(一)

一、OpenCV环境搭建

具体流程网上博客很多,主要注意以下两点:

  1. debug模式和release模式的的区别,分别连接对应的lib文件,选用x64模式(x86好像不支持)。
  2. 如果设置环境变量后依然报错找不到对应的dll文件,直接将E:\OpenCV\opencv\build\x64\vc15\bin(OpenCV安装路径)中的dll拷贝到C:\Windows\System32中,以及C:\Windows\SysWOW64中。

二、 骨架信息:

kinect 2.0可以同时追踪六个人的骨架,因此每次我们需要先调用函数,获得六个骨架信息(如果没有人,那么那个骨架类就是空指针)。代码为:

pBodyFrame->GetAndRefreshBodyData(_countof(ppBodies), ppBodies);

这里ppBodies是一个长度为6的IBody数组,IBody是用来存储追踪到的骨架信息的类。
在获得了这个类后,我们需要进一步从类中提取骨架位置,对于ppBodies中的每一个元素pBody,代码为:

pBody->GetJoints(_countof(joints), joints);

这里的joints是一个长度为25的数组,每一个元素就是骨架的位置信息。然而, 这个骨架位置信息是照相机坐标系(camera view)下的位置,x和y的范围都是-1到1。因此我们需要将它转化到深度坐标系中。这里要用到一个coordinateMapper类,具体代码为:

m_pCoordinateMapper->MapCameraPointToDepthSpace(joints[j].Position, &depthSpacePosition[j]);

coordinateMapper类的创建非常简单,具体可以参考代码。depthSpacePosition是一个长度也为25的数组,每一个元素是DepthSpacePoint,这个元素包含了在深度坐标系下的x和y坐标。

三、关节数据

Joint myJointArr[JointType_Count];//JointType_Count=25
typedef struct _Joint
{
JointType JointType;
CameraSpacePoint Position;
TrackingState TrackingState;
} Joint;

typedef enum _JointType JointType;
enum _JointType
{
JointType_SpineBase = 0,
JointType_SpineMid = 1,
JointType_Neck = 2,
JointType_Head = 3,
JointType_ShoulderLeft = 4,
JointType_ElbowLeft = 5,
JointType_WristLeft = 6,
JointType_HandLeft = 7,
JointType_ShoulderRight = 8,
JointType_ElbowRight = 9,
JointType_WristRight = 10,
JointType_HandRight = 11,
JointType_HipLeft = 12,
JointType_KneeLeft = 13,
JointType_AnkleLeft = 14,
JointType_FootLeft = 15,
JointType_HipRight = 16,
JointType_KneeRight = 17,
JointType_AnkleRight = 18,
JointType_FootRight = 19,
JointType_SpineShoulder = 20,
JointType_HandTipLeft = 21,
JointType_ThumbLeft = 22,
JointType_HandTipRight = 23,
JointType_ThumbRight = 24,
JointType_Count = ( JointType_ThumbRight + 1 )
} ;

typedef struct _CameraSpacePoint
{
float X;
float Y;
float Z;
} CameraSpacePoint;

typedef enum _TrackingState TrackingState;
enum _TrackingState
{
TrackingState_NotTracked = 0,
TrackingState_Inferred = 1,
TrackingState_Tracked = 2
} ;

四、坐标

名称应用的数据源维数单位范围原点
ColorSpacePointColor2维像素1920x1080左上角
DepthSpacePointDepth,Infrared,Body index2维像素512x424左上角
CameraSpacePointBody3维红外/深度摄像头
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值