calculateData = (data) => {
let avgKeypoints = [];
let coordinates = [];
if (data2 == 1 && data1 == 1) {
return;
}
if (data.webcam == "1") {
data1[0] = data;
console.log("data1[0] ", data1[0]);
} else if (data.webcam == "2") {
data2[0] = data;
console.log("data2[0] ",data2[0]);
}
if (data1[0] != undefined && data2[0] != undefined) {
console.log("data1 & data2 ", data1," - ", data2)
for (let i = 0; i < 17; i++) {
console.log("====>>> data1.x: ",data1[0] , "data2.x: ", data2[0]);
const keypoint = {
score: (data1[0].data[i].score + data2[0].data[i].score) / 2,
part: data1[0].data[i].part,
position: {
x: (data1[0].data[i].x + data2[0].data[i].x) / 2,
y: (data1[0].data[i].y + data2[0].data[i].y) / 2
}
};
avgKeypoints.push(keypoint);
const xyz_points = {
pointX: data1[0].data[i].x,
pointY: data1[0].data[i].y,
pointZ: data2[0].data[i].x,
bodyPart: data1[0].data[i].part
};
coordinates.push(xyz_points);
}
xyzArr.push(coordinates);
const ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
let adjacentKeyPoints = posenet.getAdjacentKeyPoints(avgKeypoints, 0);
adjacentKeyPoints.forEach((keypoints) => {
drawSegment(
toTuple(keypoints[0].position),
toTuple(keypoints[1].position),
figColor,
1,
ctx
);
});
for (let i = 0; i < avgKeypoints.length; i++) {
const keypoint = avgKeypoints[i];
if (keypoint.score < 0) {
continue;
}
const { y, x } = keypoint.position;
drawPoint(ctx, y * 1, x * 1, pointRadius, color);
}
avgKeypoints = [];
}
return data;
}