1、百度搜骨骼点对应关系(来源见水印)(不太对吧?):
我不知道大家什么情况,反正我获得的不是按照这个顺序来的,mathworks上关于kinect的函数连接也不是这个,
我的是这样子(所以大家看情况来吧):
绘制代码
x=skeletonJoints(:,1);
y=skeletonJoints(:,2);
imshow(depthMetadata.BodyIndexFrame,[])
hold on
plot(x,y,'w*')
for i=1:25
text(x(i)+3,y(i)+3,num2str(i),'Color','green') ; %加上3使标号和点不重合
end
2、绘制骨架线函数skeletonViewer.mat
输入参数skeleton:骨骼点数据,image:RGB图像, nSkeleton:采集到的人物数目
function [] = skeletonViewer(skeleton, image, nSkeleton)
imshow(image);
SkeletonConnectionMap = [[1 2]; % 脊柱
[2 3];
[3 4];
[3 5]; %左手
[5 6];
[6 7];
[7 8];
[3 9]; %右手
[9 10];
[10 11];
[11 12];
[1 17]; % 右腿
[17 18];
[18 19];
[19 20];
[1 13]; %左腿
[13 14];
[14 15];
[15 16]];
for i = 1:19
if nSkeleton > 0
X1 = [skeleton(SkeletonConnectionMap(i,1),1,1) skeleton(SkeletonConnectionMap(i,2),1,1)];
Y1 = [skeleton(SkeletonConnectionMap(i,1),2,1) skeleton(SkeletonConnectionMap(i,2),2,1)];
line(X1,Y1, 'LineWidth', 1.5, 'LineStyle', '-', 'Marker', '+', 'Color', 'r');
end
if nSkeleton > 1%这里就画了两个人的,最多6个以此类推就好
X2 = [skeleton(SkeletonConnectionMap(i,1),1,2) skeleton(SkeletonConnectionMap(i,2),1,2)];
Y2 = [skeleton(SkeletonConnectionMap(i,1),2,2) skeleton(SkeletonConnectionMap(i,2),2,2)];
line(X2,Y2, 'LineWidth', 1.5, 'LineStyle', '-', 'Marker', '+', 'Color', 'g');
end
hold on;
end
hold off;
SkeletonConnectionMap = [ [4 3];
[3 21];
[21 2];
[2 1];
[21 9];
[9 10];
[10 11];
[11 12];
[12 24];
[12 25];
[21 5];
[5 6];
[6 7];
[7 8];
[8 22];
[8 23];
[1 17];
[17 18];
[18 19];
[19 20];
[1 13];
[13 14];
[14 15];
[15 16];
];