代码主要copy的mathworks。遇到了一些错误,主要是:
1、kinect1.0和2.0的一些函数对应不上,查找了对应函数关系
2、原代码有些地方由于顺序等原因在我的电脑上也出错,调整了一些顺序
3、原来采集100帧,报的内存不足,(但在老师电脑上也这个配置,老师说是由于我的电脑usb3.0的质量问题),所以改成50帧
删减修改后
imaqhwinfo
colorVid = videoinput('kinect',1);
%preview(colorVid)%可以预览视频流
depthVid = videoinput('kinect',2);
%preview(depthVid)
triggerconfig(depthVid,'manual');
triggerconfig(colorVid,'manual');
depthVid.FramesPerTrigger = 1;
depthVid.TriggerRepeat = inf;
set(getselectedsource(depthVid),'EnableBodyTracking','on')%v2和v1不同,后来改动
start(depthVid);figure;
for i=1:50%为啥采集50帧?为了让人做好准备进入相框?
trigger(depthVid);
[depthMap,~,depthMetadata] = getdata(depthVid);
imshow(depthMap,[0 4096]);
end
stop(depthVid);
skeletonJoints = depthMetadata.DepthJointIndices(:,:,depthMetadata.IsBodyTracked);
imshow(depthMap,[0 4096]);
hold on;plot(skeletonJoints(:,1),skeletonJoints(:,2),'*');
这个skeletonJoints( ;)就是骨骼点信息啦
结果:
腿的骨骼点跑偏了…不要在意这些细节
曾经的错误和解决方法也贴一贴吧:
因为这个trackingmode是v1.0的用法
等等
其中对应关系:
kinect1.0
kinect2.0
|
请发表评论