mirror of https://github.com/vladmandic/human
parent
2b0a2fecc2
commit
c1dc719a67
|
@ -9,12 +9,12 @@
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### **HEAD -> main** 2024/10/14 mandic00@live.com
|
||||||
|
|
||||||
|
|
||||||
### **3.3.3** 2024/10/14 mandic00@live.com
|
### **3.3.3** 2024/10/14 mandic00@live.com
|
||||||
|
|
||||||
- add loaded property to model stats and mark models not loaded correctly.
|
- add loaded property to model stats and mark models not loaded correctly.
|
||||||
|
|
||||||
### **origin/main** 2024/09/11 mandic00@live.com
|
|
||||||
|
|
||||||
- release build
|
- release build
|
||||||
|
|
||||||
### **3.3.2** 2024/09/11 mandic00@live.com
|
### **3.3.2** 2024/09/11 mandic00@live.com
|
||||||
|
|
|
@ -94,7 +94,7 @@ function addFace(face, source) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
document.getElementById('description').innerHTML = canvas.title;
|
document.getElementById('description').innerHTML = canvas.title;
|
||||||
};
|
};
|
||||||
human.tf.browser.draw(face.tensor, canvas);
|
human.draw.tensor(face.tensor, canvas);
|
||||||
human.tf.dispose(face.tensor);
|
human.tf.dispose(face.tensor);
|
||||||
return canvas;
|
return canvas;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -240,7 +240,7 @@ async function detectFace() {
|
||||||
if (!current?.face?.tensor || !current?.face?.embedding) return false;
|
if (!current?.face?.tensor || !current?.face?.embedding) return false;
|
||||||
console.log('face record:', current.face); // eslint-disable-line no-console
|
console.log('face record:', current.face); // eslint-disable-line no-console
|
||||||
log(`detected face: ${current.face.gender} ${current.face.age || 0}y distance ${100 * (current.face.distance || 0)}cm/${Math.round(100 * (current.face.distance || 0) / 2.54)}in`);
|
log(`detected face: ${current.face.gender} ${current.face.age || 0}y distance ${100 * (current.face.distance || 0)}cm/${Math.round(100 * (current.face.distance || 0) / 2.54)}in`);
|
||||||
await human.tf.browser.draw(current.face.tensor, dom.canvas);
|
await human.draw.tensor(current.face.tensor, dom.canvas);
|
||||||
if (await indexDb.count() === 0) {
|
if (await indexDb.count() === 0) {
|
||||||
log('face database is empty: nothing to compare face with');
|
log('face database is empty: nothing to compare face with');
|
||||||
document.body.style.background = 'black';
|
document.body.style.background = 'black';
|
||||||
|
|
|
@ -70,7 +70,7 @@ async function selectFaceCanvas(face) {
|
||||||
if (face.tensor) {
|
if (face.tensor) {
|
||||||
title('Sorting Faces by Similarity');
|
title('Sorting Faces by Similarity');
|
||||||
const c = document.getElementById('orig');
|
const c = document.getElementById('orig');
|
||||||
await human.tf.browser.draw(face.tensor, c);
|
await human.draw.tensor(face.tensor, c);
|
||||||
const arr = db.map((rec) => rec.embedding);
|
const arr = db.map((rec) => rec.embedding);
|
||||||
const res = await human.match.find(face.embedding, arr);
|
const res = await human.match.find(face.embedding, arr);
|
||||||
log('Match:', db[res.index].name);
|
log('Match:', db[res.index].name);
|
||||||
|
@ -97,7 +97,7 @@ async function selectFaceCanvas(face) {
|
||||||
canvas.tag.similarity = similarity;
|
canvas.tag.similarity = similarity;
|
||||||
// get best match
|
// get best match
|
||||||
// draw the canvas
|
// draw the canvas
|
||||||
await human.tf.browser.draw(current.tensor, canvas);
|
await human.draw.tensor(current.tensor, canvas);
|
||||||
const ctx = canvas.getContext('2d');
|
const ctx = canvas.getContext('2d');
|
||||||
ctx.font = 'small-caps 1rem "Lato"';
|
ctx.font = 'small-caps 1rem "Lato"';
|
||||||
ctx.fillStyle = 'rgba(0, 0, 0, 1)';
|
ctx.fillStyle = 'rgba(0, 0, 0, 1)';
|
||||||
|
@ -144,7 +144,7 @@ async function addFaceCanvas(index, res, fileName) {
|
||||||
gender: ${Math.round(100 * res.face[i].genderScore)}% ${res.face[i].gender}
|
gender: ${Math.round(100 * res.face[i].genderScore)}% ${res.face[i].gender}
|
||||||
emotion: ${emotion}
|
emotion: ${emotion}
|
||||||
`.replace(/ /g, ' ');
|
`.replace(/ /g, ' ');
|
||||||
await human.tf.browser.draw(res.face[i].tensor, canvas);
|
await human.draw.tensor(res.face[i].tensor, canvas);
|
||||||
const ctx = canvas.getContext('2d');
|
const ctx = canvas.getContext('2d');
|
||||||
if (!ctx) return;
|
if (!ctx) return;
|
||||||
ctx.font = 'small-caps 0.8rem "Lato"';
|
ctx.font = 'small-caps 0.8rem "Lato"';
|
||||||
|
|
|
@ -223,7 +223,7 @@ async function calcSimmilarity(result) {
|
||||||
log('setting face compare baseline:', result.face[0]);
|
log('setting face compare baseline:', result.face[0]);
|
||||||
if (result.face[0].tensor) {
|
if (result.face[0].tensor) {
|
||||||
const c = document.getElementById('orig');
|
const c = document.getElementById('orig');
|
||||||
human.tf.browser.draw(result.face[0].tensor, c);
|
human.draw.tensor(result.face[0].tensor, c);
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('compare-canvas').getContext('2d').drawImage(compare.original.canvas, 0, 0, 200, 200);
|
document.getElementById('compare-canvas').getContext('2d').drawImage(compare.original.canvas, 0, 0, 200, 200);
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,7 +85,7 @@ async function main() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dom.fps.innerText = `fps: ${Math.round(10000 / (t1 - t0)) / 10}`; // mark performance
|
dom.fps.innerText = `fps: ${Math.round(10000 / (t1 - t0)) / 10}`; // mark performance
|
||||||
human.tf.browser.draw(rgba, dom.output); // draw raw output
|
human.draw.tensor(rgba, dom.output); // draw raw output
|
||||||
human.tf.dispose(rgba); // dispose tensors
|
human.tf.dispose(rgba); // dispose tensors
|
||||||
ctxMerge.globalCompositeOperation = 'source-over';
|
ctxMerge.globalCompositeOperation = 'source-over';
|
||||||
ctxMerge.drawImage(dom.background, 0, 0); // draw original video to first stacked canvas
|
ctxMerge.drawImage(dom.background, 0, 0); // draw original video to first stacked canvas
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -32781,31 +32781,31 @@ async function process2(input, config3, getTensor = true) {
|
||||||
throw new Error("input error: type not recognized");
|
throw new Error("input error: type not recognized");
|
||||||
}
|
}
|
||||||
if (input instanceof mt) {
|
if (input instanceof mt) {
|
||||||
let tensor2 = null;
|
let tensor3 = null;
|
||||||
if (input["isDisposedInternal"]) throw new Error("input error: attempted to use tensor but it is disposed");
|
if (input["isDisposedInternal"]) throw new Error("input error: attempted to use tensor but it is disposed");
|
||||||
if (!input.shape) throw new Error("input error: attempted to use tensor without a shape");
|
if (!input.shape) throw new Error("input error: attempted to use tensor without a shape");
|
||||||
if (input.shape.length === 3) {
|
if (input.shape.length === 3) {
|
||||||
if (input.shape[2] === 3) {
|
if (input.shape[2] === 3) {
|
||||||
tensor2 = Ms(input, 0);
|
tensor3 = Ms(input, 0);
|
||||||
} else if (input.shape[2] === 4) {
|
} else if (input.shape[2] === 4) {
|
||||||
const rgb3 = B1(input, [0, 0, 0], [-1, -1, 3]);
|
const rgb3 = B1(input, [0, 0, 0], [-1, -1, 3]);
|
||||||
tensor2 = Ms(rgb3, 0);
|
tensor3 = Ms(rgb3, 0);
|
||||||
Ot(rgb3);
|
Ot(rgb3);
|
||||||
}
|
}
|
||||||
} else if (input.shape.length === 4) {
|
} else if (input.shape.length === 4) {
|
||||||
if (input.shape[3] === 3) {
|
if (input.shape[3] === 3) {
|
||||||
tensor2 = Ur(input);
|
tensor3 = Ur(input);
|
||||||
} else if (input.shape[3] === 4) {
|
} else if (input.shape[3] === 4) {
|
||||||
tensor2 = z1(input, [0, 0, 0, 0], [-1, -1, -1, 3]);
|
tensor3 = z1(input, [0, 0, 0, 0], [-1, -1, -1, 3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tensor2 == null || tensor2.shape.length !== 4 || tensor2.shape[0] !== 1 || tensor2.shape[3] !== 3) throw new Error(`input error: attempted to use tensor with unrecognized shape: ${input.shape.toString()}`);
|
if (tensor3 == null || tensor3.shape.length !== 4 || tensor3.shape[0] !== 1 || tensor3.shape[3] !== 3) throw new Error(`input error: attempted to use tensor with unrecognized shape: ${input.shape.toString()}`);
|
||||||
if (tensor2.dtype === "int32") {
|
if (tensor3.dtype === "int32") {
|
||||||
const cast = Ue(tensor2, "float32");
|
const cast = Ue(tensor3, "float32");
|
||||||
Ot(tensor2);
|
Ot(tensor3);
|
||||||
tensor2 = cast;
|
tensor3 = cast;
|
||||||
}
|
}
|
||||||
return { tensor: tensor2, canvas: config3.filter.return ? outCanvas : null };
|
return { tensor: tensor3, canvas: config3.filter.return ? outCanvas : null };
|
||||||
}
|
}
|
||||||
if (typeof input["readyState"] !== "undefined" && input.readyState <= 2) {
|
if (typeof input["readyState"] !== "undefined" && input.readyState <= 2) {
|
||||||
if (config3.debug) log("input stream is not ready");
|
if (config3.debug) log("input stream is not ready");
|
||||||
|
@ -32916,15 +32916,15 @@ async function process2(input, config3, getTensor = true) {
|
||||||
}
|
}
|
||||||
if (!pixels) throw new Error("input error: cannot create tensor");
|
if (!pixels) throw new Error("input error: cannot create tensor");
|
||||||
const casted = Ue(pixels, "float32");
|
const casted = Ue(pixels, "float32");
|
||||||
const tensor = config3.filter.equalization ? await histogramEqualization(casted) : Ms(casted, 0);
|
const tensor2 = config3.filter.equalization ? await histogramEqualization(casted) : Ms(casted, 0);
|
||||||
Ot([pixels, casted]);
|
Ot([pixels, casted]);
|
||||||
if (config3.filter.autoBrightness) {
|
if (config3.filter.autoBrightness) {
|
||||||
const max = Ra(tensor);
|
const max = Ra(tensor2);
|
||||||
const maxVal = await max.data();
|
const maxVal = await max.data();
|
||||||
config3.filter.brightness = maxVal[0] > 1 ? 1 - maxVal[0] / 255 : 1 - maxVal[0];
|
config3.filter.brightness = maxVal[0] > 1 ? 1 - maxVal[0] / 255 : 1 - maxVal[0];
|
||||||
Ot(max);
|
Ot(max);
|
||||||
}
|
}
|
||||||
return { tensor, canvas: config3.filter.return ? outCanvas : null };
|
return { tensor: tensor2, canvas: config3.filter.return ? outCanvas : null };
|
||||||
}
|
}
|
||||||
async function skip(config3, input) {
|
async function skip(config3, input) {
|
||||||
let skipFrame = false;
|
let skipFrame = false;
|
||||||
|
@ -33877,7 +33877,8 @@ __export(draw_exports, {
|
||||||
init: () => init2,
|
init: () => init2,
|
||||||
object: () => object,
|
object: () => object,
|
||||||
options: () => options2,
|
options: () => options2,
|
||||||
person: () => person
|
person: () => person,
|
||||||
|
tensor: () => tensor
|
||||||
});
|
});
|
||||||
|
|
||||||
// src/draw/primitives.ts
|
// src/draw/primitives.ts
|
||||||
|
@ -38168,6 +38169,11 @@ function canvas2(input, output) {
|
||||||
if (!ctx) return;
|
if (!ctx) return;
|
||||||
ctx.drawImage(input, 0, 0);
|
ctx.drawImage(input, 0, 0);
|
||||||
}
|
}
|
||||||
|
async function tensor(input, output) {
|
||||||
|
if (!input || !output) return;
|
||||||
|
if (!env.browser) return;
|
||||||
|
await cT.toPixels(input, output);
|
||||||
|
}
|
||||||
async function all(inCanvas2, result, drawOptions) {
|
async function all(inCanvas2, result, drawOptions) {
|
||||||
if (!(result == null ? void 0 : result.performance) || !inCanvas2) return null;
|
if (!(result == null ? void 0 : result.performance) || !inCanvas2) return null;
|
||||||
const timeStamp = now();
|
const timeStamp = now();
|
||||||
|
@ -38386,7 +38392,7 @@ async function decodeResults(boxesTensor, logitsTensor, config3, outputSize2) {
|
||||||
const detectedBox = { score, boxRaw, box };
|
const detectedBox = { score, boxRaw, box };
|
||||||
detectedBoxes.push(detectedBox);
|
detectedBoxes.push(detectedBox);
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return detectedBoxes;
|
return detectedBoxes;
|
||||||
}
|
}
|
||||||
async function detectBoxes(input, config3, outputSize2) {
|
async function detectBoxes(input, config3, outputSize2) {
|
||||||
|
@ -38397,7 +38403,7 @@ async function detectBoxes(input, config3, outputSize2) {
|
||||||
t10.logits = cc(t10.logitsRaw);
|
t10.logits = cc(t10.logitsRaw);
|
||||||
t10.boxes = cc(t10.boxesRaw);
|
t10.boxes = cc(t10.boxesRaw);
|
||||||
const boxes = await decodeResults(t10.boxes, t10.logits, config3, outputSize2);
|
const boxes = await decodeResults(t10.boxes, t10.logits, config3, outputSize2);
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return boxes;
|
return boxes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38489,7 +38495,7 @@ function prepareImage(input, size2, cropBox) {
|
||||||
} else {
|
} else {
|
||||||
final = je(t10.cropped || input, constants.tf255);
|
final = je(t10.cropped || input, constants.tf255);
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
function rescaleKeypoints(keypoints, outputSize2, cropBox) {
|
function rescaleKeypoints(keypoints, outputSize2, cropBox) {
|
||||||
|
@ -38545,7 +38551,7 @@ async function detectLandmarks(input, config3, outputSize2) {
|
||||||
const poseScore = (await t10.poseflag.data())[0];
|
const poseScore = (await t10.poseflag.data())[0];
|
||||||
const points = await t10.ld.data();
|
const points = await t10.ld.data();
|
||||||
const distances = await t10.world.data();
|
const distances = await t10.world.data();
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
const keypointsRelative = [];
|
const keypointsRelative = [];
|
||||||
const depth = 5;
|
const depth = 5;
|
||||||
for (let i = 0; i < points.length / depth; i++) {
|
for (let i = 0; i < points.length / depth; i++) {
|
||||||
|
@ -38743,7 +38749,7 @@ async function process3(res, outputShape, config3) {
|
||||||
];
|
];
|
||||||
results.push({ id: i++, score, class: classVal, label, box, boxRaw });
|
results.push({ id: i++, score, class: classVal, label, box, boxRaw });
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
async function predict2(input, config3) {
|
async function predict2(input, config3) {
|
||||||
|
@ -38838,7 +38844,7 @@ async function predict3(image, config3) {
|
||||||
}
|
}
|
||||||
skipped3 = 0;
|
skipped3 = 0;
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const tensor = De(() => {
|
const tensor2 = De(() => {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
const resize = eX.resizeBilinear(image, [((_a = model4 == null ? void 0 : model4.inputs[0].shape) == null ? void 0 : _a[2]) || 0, ((_b = model4 == null ? void 0 : model4.inputs[0].shape) == null ? void 0 : _b[1]) || 0], false);
|
const resize = eX.resizeBilinear(image, [((_a = model4 == null ? void 0 : model4.inputs[0].shape) == null ? void 0 : _a[2]) || 0, ((_b = model4 == null ? void 0 : model4.inputs[0].shape) == null ? void 0 : _b[1]) || 0], false);
|
||||||
const enhance2 = se(resize, constants.tf2);
|
const enhance2 = se(resize, constants.tf2);
|
||||||
|
@ -38846,9 +38852,9 @@ async function predict3(image, config3) {
|
||||||
return norm;
|
return norm;
|
||||||
});
|
});
|
||||||
let resT;
|
let resT;
|
||||||
if (config3.body.enabled) resT = model4 == null ? void 0 : model4.execute(tensor);
|
if (config3.body.enabled) resT = model4 == null ? void 0 : model4.execute(tensor2);
|
||||||
lastTime3 = now();
|
lastTime3 = now();
|
||||||
Ot(tensor);
|
Ot(tensor2);
|
||||||
if (resT) {
|
if (resT) {
|
||||||
cache2.keypoints.length = 0;
|
cache2.keypoints.length = 0;
|
||||||
const squeeze = cc(resT);
|
const squeeze = cc(resT);
|
||||||
|
@ -39117,7 +39123,7 @@ function decodeBoxes2(boxOutputs) {
|
||||||
t10.startNormalized = se(t10.starts, inputSizeT);
|
t10.startNormalized = se(t10.starts, inputSizeT);
|
||||||
t10.endNormalized = se(t10.ends, inputSizeT);
|
t10.endNormalized = se(t10.ends, inputSizeT);
|
||||||
const boxes = r22([t10.startNormalized, t10.endNormalized], 1);
|
const boxes = r22([t10.startNormalized, t10.endNormalized], 1);
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return boxes;
|
return boxes;
|
||||||
}
|
}
|
||||||
async function getBoxes(inputImage, config3) {
|
async function getBoxes(inputImage, config3) {
|
||||||
|
@ -39187,10 +39193,10 @@ async function getBoxes(inputImage, config3) {
|
||||||
const enlargedBox = enlargeBox(scaledBox, ((_g2 = config3.face.detector) == null ? void 0 : _g2.scale) || 1.4);
|
const enlargedBox = enlargeBox(scaledBox, ((_g2 = config3.face.detector) == null ? void 0 : _g2.scale) || 1.4);
|
||||||
const squaredBox = squarifyBox(enlargedBox);
|
const squaredBox = squarifyBox(enlargedBox);
|
||||||
if (squaredBox.size[0] > (((_h2 = config3.face.detector) == null ? void 0 : _h2["minSize"]) || 0) && squaredBox.size[1] > (((_i2 = config3.face.detector) == null ? void 0 : _i2["minSize"]) || 0)) boxes.push(squaredBox);
|
if (squaredBox.size[0] > (((_h2 = config3.face.detector) == null ? void 0 : _h2["minSize"]) || 0) && squaredBox.size[1] > (((_i2 = config3.face.detector) == null ? void 0 : _i2["minSize"]) || 0)) boxes.push(squaredBox);
|
||||||
Object.keys(b).forEach((tensor) => Ot(b[tensor]));
|
Object.keys(b).forEach((tensor2) => Ot(b[tensor2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return boxes;
|
return boxes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39539,7 +39545,7 @@ async function predict5(image, config3, idx, count2) {
|
||||||
if (data[i] > (config3.face.emotion.minConfidence || 0)) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });
|
if (data[i] > (config3.face.emotion.minConfidence || 0)) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });
|
||||||
}
|
}
|
||||||
obj.sort((a, b) => b.score - a.score);
|
obj.sort((a, b) => b.score - a.score);
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
}
|
}
|
||||||
last3[idx] = obj;
|
last3[idx] = obj;
|
||||||
lastCount = count2;
|
lastCount = count2;
|
||||||
|
@ -39562,15 +39568,15 @@ async function load7(config3) {
|
||||||
}
|
}
|
||||||
function enhance(input, config3) {
|
function enhance(input, config3) {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
const tensor = input.image || input.tensor || input;
|
const tensor2 = input.image || input.tensor || input;
|
||||||
if (!(model9 == null ? void 0 : model9.inputs[0].shape)) return tensor;
|
if (!(model9 == null ? void 0 : model9.inputs[0].shape)) return tensor2;
|
||||||
let crop;
|
let crop;
|
||||||
if (((_a = config3.face.description) == null ? void 0 : _a["crop"]) > 0) {
|
if (((_a = config3.face.description) == null ? void 0 : _a["crop"]) > 0) {
|
||||||
const cropval = (_b = config3.face.description) == null ? void 0 : _b["crop"];
|
const cropval = (_b = config3.face.description) == null ? void 0 : _b["crop"];
|
||||||
const box = [[cropval, cropval, 1 - cropval, 1 - cropval]];
|
const box = [[cropval, cropval, 1 - cropval, 1 - cropval]];
|
||||||
crop = eX.cropAndResize(tensor, box, [0], [model9.inputs[0].shape[2], model9.inputs[0].shape[1]]);
|
crop = eX.cropAndResize(tensor2, box, [0], [model9.inputs[0].shape[2], model9.inputs[0].shape[1]]);
|
||||||
} else {
|
} else {
|
||||||
crop = eX.resizeBilinear(tensor, [model9.inputs[0].shape[2], model9.inputs[0].shape[1]], false);
|
crop = eX.resizeBilinear(tensor2, [model9.inputs[0].shape[2], model9.inputs[0].shape[1]], false);
|
||||||
}
|
}
|
||||||
const norm = se(crop, constants.tf255);
|
const norm = se(crop, constants.tf255);
|
||||||
Ot(crop);
|
Ot(crop);
|
||||||
|
@ -39778,7 +39784,7 @@ async function predict9(image, config3, idx, count2) {
|
||||||
let age2 = ageSorted[0][0];
|
let age2 = ageSorted[0][0];
|
||||||
for (let i = 1; i < ageSorted.length; i++) age2 += ageSorted[i][1] * (ageSorted[i][0] - age2);
|
for (let i = 1; i < ageSorted.length; i++) age2 += ageSorted[i][1] * (ageSorted[i][0] - age2);
|
||||||
obj.age = Math.round(10 * age2) / 10;
|
obj.age = Math.round(10 * age2) / 10;
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
last5[idx] = obj;
|
last5[idx] = obj;
|
||||||
lastCount5 = count2;
|
lastCount5 = count2;
|
||||||
lastTime8 = now();
|
lastTime8 = now();
|
||||||
|
@ -39826,7 +39832,7 @@ async function predict10(image, config3, idx, count2) {
|
||||||
const data = await t10.age.data();
|
const data = await t10.age.data();
|
||||||
obj.age = Math.trunc(10 * data[0]) / 10;
|
obj.age = Math.trunc(10 * data[0]) / 10;
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
last6[idx] = obj;
|
last6[idx] = obj;
|
||||||
lastCount6 = count2;
|
lastCount6 = count2;
|
||||||
lastTime9 = now();
|
lastTime9 = now();
|
||||||
|
@ -39889,7 +39895,7 @@ async function predict11(image, config3, idx, count2) {
|
||||||
const data = await t10.gender.data();
|
const data = await t10.gender.data();
|
||||||
obj.gender = data[0] > data[1] ? "female" : "male";
|
obj.gender = data[0] > data[1] ? "female" : "male";
|
||||||
obj.genderScore = data[0] > data[1] ? Math.trunc(100 * data[0]) / 100 : Math.trunc(100 * data[1]) / 100;
|
obj.genderScore = data[0] > data[1] ? Math.trunc(100 * data[0]) / 100 : Math.trunc(100 * data[1]) / 100;
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
last7[idx] = obj;
|
last7[idx] = obj;
|
||||||
lastCount7 = count2;
|
lastCount7 = count2;
|
||||||
lastTime10 = now();
|
lastTime10 = now();
|
||||||
|
@ -39928,7 +39934,7 @@ async function predict12(input, config3, idx, count2) {
|
||||||
t10.data = model15.execute(t10.crop);
|
t10.data = model15.execute(t10.crop);
|
||||||
const output = await t10.data.data();
|
const output = await t10.data.data();
|
||||||
data = Array.from(output);
|
data = Array.from(output);
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
}
|
}
|
||||||
last8[idx] = data;
|
last8[idx] = data;
|
||||||
lastCount8 = count2;
|
lastCount8 = count2;
|
||||||
|
@ -39967,7 +39973,7 @@ async function predict13(input, config3, idx, count2) {
|
||||||
t10.data = model16.execute(t10.crop);
|
t10.data = model16.execute(t10.crop);
|
||||||
const output = await t10.data.data();
|
const output = await t10.data.data();
|
||||||
data = Array.from(output);
|
data = Array.from(output);
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
}
|
}
|
||||||
last9[idx] = data;
|
last9[idx] = data;
|
||||||
lastCount9 = count2;
|
lastCount9 = count2;
|
||||||
|
@ -40216,7 +40222,7 @@ var detectFace = async (instance, input) => {
|
||||||
descRes.descriptor = insightfaceRes;
|
descRes.descriptor = insightfaceRes;
|
||||||
}
|
}
|
||||||
const irisSize = ((_v2 = instance.config.face.iris) == null ? void 0 : _v2.enabled) ? calculateCameraDistance(faces[i], input.shape[2]) : 0;
|
const irisSize = ((_v2 = instance.config.face.iris) == null ? void 0 : _v2.enabled) ? calculateCameraDistance(faces[i], input.shape[2]) : 0;
|
||||||
const tensor = ((_w2 = instance.config.face.detector) == null ? void 0 : _w2.return) ? cc(faces[i].tensor) : null;
|
const tensor2 = ((_w2 = instance.config.face.detector) == null ? void 0 : _w2.return) ? cc(faces[i].tensor) : null;
|
||||||
Ot(faces[i].tensor);
|
Ot(faces[i].tensor);
|
||||||
if (faces[i].tensor) delete faces[i].tensor;
|
if (faces[i].tensor) delete faces[i].tensor;
|
||||||
const res = {
|
const res = {
|
||||||
|
@ -40233,7 +40239,7 @@ var detectFace = async (instance, input) => {
|
||||||
if (livenessRes) res.live = livenessRes;
|
if (livenessRes) res.live = livenessRes;
|
||||||
if (irisSize > 0) res.distance = irisSize;
|
if (irisSize > 0) res.distance = irisSize;
|
||||||
if (rotation) res.rotation = rotation;
|
if (rotation) res.rotation = rotation;
|
||||||
if (tensor) res.tensor = tensor;
|
if (tensor2) res.tensor = tensor2;
|
||||||
faceRes.push(res);
|
faceRes.push(res);
|
||||||
instance.analyze("End Face");
|
instance.analyze("End Face");
|
||||||
}
|
}
|
||||||
|
@ -43811,7 +43817,7 @@ var HandDetector = class {
|
||||||
t10.add = Ce(t10.boxCenterPoints, t10.halfBoxSizes);
|
t10.add = Ce(t10.boxCenterPoints, t10.halfBoxSizes);
|
||||||
t10.endPoints = se(t10.add, this.inputSizeTensor);
|
t10.endPoints = se(t10.add, this.inputSizeTensor);
|
||||||
const res = r22([t10.startPoints, t10.endPoints], 1);
|
const res = r22([t10.startPoints, t10.endPoints], 1);
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
normalizeLandmarks(rawPalmLandmarks, index2) {
|
normalizeLandmarks(rawPalmLandmarks, index2) {
|
||||||
|
@ -43820,7 +43826,7 @@ var HandDetector = class {
|
||||||
t10.div = je(t10.reshape, this.inputSizeTensor);
|
t10.div = je(t10.reshape, this.inputSizeTensor);
|
||||||
t10.landmarks = Ce(t10.div, this.anchors[index2] ? this.anchors[index2] : 0);
|
t10.landmarks = Ce(t10.div, this.anchors[index2] ? this.anchors[index2] : 0);
|
||||||
const res = se(t10.landmarks, this.inputSizeTensor);
|
const res = se(t10.landmarks, this.inputSizeTensor);
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
async predict(input, config3) {
|
async predict(input, config3) {
|
||||||
|
@ -43853,9 +43859,9 @@ var HandDetector = class {
|
||||||
const hand3 = { startPoint, endPoint, palmLandmarks, confidence: scores[index2] };
|
const hand3 = { startPoint, endPoint, palmLandmarks, confidence: scores[index2] };
|
||||||
const scaled = scaleBoxCoordinates2(hand3, [(input.shape[2] || 1) / this.inputSize, (input.shape[1] || 0) / this.inputSize]);
|
const scaled = scaleBoxCoordinates2(hand3, [(input.shape[2] || 1) / this.inputSize, (input.shape[1] || 0) / this.inputSize]);
|
||||||
hands.push(scaled);
|
hands.push(scaled);
|
||||||
Object.keys(p).forEach((tensor) => Ot(p[tensor]));
|
Object.keys(p).forEach((tensor2) => Ot(p[tensor2]));
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return hands;
|
return hands;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -44182,7 +44188,7 @@ async function detectHands(input, config3) {
|
||||||
const hand3 = { id: id2++, score, box: boxFull, boxRaw, label };
|
const hand3 = { id: id2++, score, box: boxFull, boxRaw, label };
|
||||||
hands.push(hand3);
|
hands.push(hand3);
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
hands.sort((a, b) => b.score - a.score);
|
hands.sort((a, b) => b.score - a.score);
|
||||||
if (hands.length > (config3.hand.maxDetected || 1)) hands.length = config3.hand.maxDetected || 1;
|
if (hands.length > (config3.hand.maxDetected || 1)) hands.length = config3.hand.maxDetected || 1;
|
||||||
return hands;
|
return hands;
|
||||||
|
@ -44221,7 +44227,7 @@ async function detectFingers(input, h, config3) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
}
|
}
|
||||||
return hand3;
|
return hand3;
|
||||||
}
|
}
|
||||||
|
@ -44506,7 +44512,7 @@ async function predict16(input, config3) {
|
||||||
default:
|
default:
|
||||||
rgba = ar(0);
|
rgba = ar(0);
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return rgba;
|
return rgba;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44643,7 +44649,7 @@ function padInput(input, inputSize10) {
|
||||||
t10.pad = Aa(input, cache5.padding);
|
t10.pad = Aa(input, cache5.padding);
|
||||||
t10.resize = eX.resizeBilinear(t10.pad, [inputSize10, inputSize10]);
|
t10.resize = eX.resizeBilinear(t10.pad, [inputSize10, inputSize10]);
|
||||||
const final = Ue(t10.resize, "int32");
|
const final = Ue(t10.resize, "int32");
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
function rescaleBody(body4, outputSize2) {
|
function rescaleBody(body4, outputSize2) {
|
||||||
|
@ -44785,7 +44791,7 @@ async function predict17(input, config3) {
|
||||||
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
||||||
jitter(body4.keypoints);
|
jitter(body4.keypoints);
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
resolve(cache6.bodies);
|
resolve(cache6.bodies);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -45215,7 +45221,7 @@ async function predict19(input, config3) {
|
||||||
results3d[1] = Ea(results3d[1]);
|
results3d[1] = Ea(results3d[1]);
|
||||||
return results3d;
|
return results3d;
|
||||||
});
|
});
|
||||||
const buffers = await Promise.all(res.map((tensor) => tensor.buffer()));
|
const buffers = await Promise.all(res.map((tensor2) => tensor2.buffer()));
|
||||||
for (const t10 of res) Ot(t10);
|
for (const t10 of res) Ot(t10);
|
||||||
const decoded = decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
const decoded = decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
||||||
if (!model20.inputs[0].shape) return [];
|
if (!model20.inputs[0].shape) return [];
|
||||||
|
@ -45337,7 +45343,7 @@ async function predict21(input, config3) {
|
||||||
default:
|
default:
|
||||||
rgba = ar(0);
|
rgba = ar(0);
|
||||||
}
|
}
|
||||||
Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));
|
Object.keys(t10).forEach((tensor2) => Ot(t10[tensor2]));
|
||||||
return rgba;
|
return rgba;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46293,8 +46299,8 @@ async function warmupCanvas(instance) {
|
||||||
} else {
|
} else {
|
||||||
const ctx = canvas3.getContext("2d");
|
const ctx = canvas3.getContext("2d");
|
||||||
if (ctx) ctx.drawImage(img, 0, 0);
|
if (ctx) ctx.drawImage(img, 0, 0);
|
||||||
const tensor = await instance.image(canvas3, true);
|
const tensor2 = await instance.image(canvas3, true);
|
||||||
const res = tensor.tensor ? await instance.detect(tensor.tensor, instance.config) : void 0;
|
const res = tensor2.tensor ? await instance.detect(tensor2.tensor, instance.config) : void 0;
|
||||||
resolve(res);
|
resolve(res);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -46344,16 +46350,16 @@ async function runCompile(instance) {
|
||||||
for (let dim = 0; dim < shape.length; dim++) {
|
for (let dim = 0; dim < shape.length; dim++) {
|
||||||
if (shape[dim] === -1) shape[dim] = dim === 0 ? 1 : 64;
|
if (shape[dim] === -1) shape[dim] = dim === 0 ? 1 : 64;
|
||||||
}
|
}
|
||||||
const tensor = Gr(shape, dtype);
|
const tensor2 = Gr(shape, dtype);
|
||||||
try {
|
try {
|
||||||
const res = model23.execute(tensor);
|
const res = model23.execute(tensor2);
|
||||||
compiledModels.push(modelName);
|
compiledModels.push(modelName);
|
||||||
if (Array.isArray(res)) res.forEach((t10) => Ot(t10));
|
if (Array.isArray(res)) res.forEach((t10) => Ot(t10));
|
||||||
else Ot(res);
|
else Ot(res);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (instance.config.debug) log("compile fail model:", modelName);
|
if (instance.config.debug) log("compile fail model:", modelName);
|
||||||
}
|
}
|
||||||
Ot(tensor);
|
Ot(tensor2);
|
||||||
}
|
}
|
||||||
const kernels = await webGLBackend["checkCompileCompletionAsync"]();
|
const kernels = await webGLBackend["checkCompileCompletionAsync"]();
|
||||||
webGLBackend["getUniformLocations"]();
|
webGLBackend["getUniformLocations"]();
|
||||||
|
@ -46556,12 +46562,12 @@ var Human = class {
|
||||||
if (!this.config.segmentation.enabled) return null;
|
if (!this.config.segmentation.enabled) return null;
|
||||||
const processed = await process2(input, this.config);
|
const processed = await process2(input, this.config);
|
||||||
if (!processed.tensor) return null;
|
if (!processed.tensor) return null;
|
||||||
let tensor = null;
|
let tensor2 = null;
|
||||||
if ((_a = this.config.segmentation.modelPath) == null ? void 0 : _a.includes("rvm")) tensor = await predict20(processed.tensor, this.config);
|
if ((_a = this.config.segmentation.modelPath) == null ? void 0 : _a.includes("rvm")) tensor2 = await predict20(processed.tensor, this.config);
|
||||||
if ((_b = this.config.segmentation.modelPath) == null ? void 0 : _b.includes("meet")) tensor = await predict16(processed.tensor, this.config);
|
if ((_b = this.config.segmentation.modelPath) == null ? void 0 : _b.includes("meet")) tensor2 = await predict16(processed.tensor, this.config);
|
||||||
if ((_c2 = this.config.segmentation.modelPath) == null ? void 0 : _c2.includes("selfie")) tensor = await predict21(processed.tensor, this.config);
|
if ((_c2 = this.config.segmentation.modelPath) == null ? void 0 : _c2.includes("selfie")) tensor2 = await predict21(processed.tensor, this.config);
|
||||||
Ot(processed.tensor);
|
Ot(processed.tensor);
|
||||||
return tensor;
|
return tensor2;
|
||||||
}
|
}
|
||||||
/** Compare two input tensors for pixel similarity
|
/** Compare two input tensors for pixel similarity
|
||||||
* - use `human.image` to process any valid input and get a tensor that can be used for compare
|
* - use `human.image` to process any valid input and get a tensor that can be used for compare
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -2,6 +2,7 @@
|
||||||
* Module that implements helper draw functions, exposed as human.draw
|
* Module that implements helper draw functions, exposed as human.draw
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import * as tf from 'dist/tfjs.esm.js';
|
||||||
import { mergeDeep, now } from '../util/util';
|
import { mergeDeep, now } from '../util/util';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import { getCanvasContext, rect } from './primitives';
|
import { getCanvasContext, rect } from './primitives';
|
||||||
|
@ -14,6 +15,7 @@ import { gesture } from './gesture';
|
||||||
import { defaultLabels } from './labels';
|
import { defaultLabels } from './labels';
|
||||||
import type { Result, PersonResult } from '../result';
|
import type { Result, PersonResult } from '../result';
|
||||||
import type { AnyCanvas, DrawOptions } from '../exports';
|
import type { AnyCanvas, DrawOptions } from '../exports';
|
||||||
|
import type { Tensor2D } from '../tfjs/types';
|
||||||
|
|
||||||
let drawTime = 0;
|
let drawTime = 0;
|
||||||
|
|
||||||
|
@ -60,6 +62,22 @@ export function canvas(input: AnyCanvas | HTMLImageElement | HTMLVideoElement, o
|
||||||
ctx.drawImage(input, 0, 0);
|
ctx.drawImage(input, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** draw processed canvas */
|
||||||
|
export async function tensor(input: Tensor2D, output: HTMLCanvasElement) {
|
||||||
|
if (!input || !output) return;
|
||||||
|
if (!env.browser) return;
|
||||||
|
// const backend = tf.getBackend();
|
||||||
|
// if (backend === 'webgpu') tf.browser.draw(input, output);
|
||||||
|
// else await tf.browser.toPixels(input, output);
|
||||||
|
await tf.browser.toPixels(input, output);
|
||||||
|
// const ctx = getCanvasContext(output) as CanvasRenderingContext2D;
|
||||||
|
// if (!ctx) return;
|
||||||
|
// const image = await process(input);
|
||||||
|
// result.canvas = image.canvas;
|
||||||
|
// human.tf.dispose(image.tensor);
|
||||||
|
// ctx.drawImage(image.canvas, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/** meta-function that performs draw for: canvas, face, body, hand */
|
/** meta-function that performs draw for: canvas, face, body, hand */
|
||||||
export async function all(inCanvas: AnyCanvas, result: Result, drawOptions?: Partial<DrawOptions>) {
|
export async function all(inCanvas: AnyCanvas, result: Result, drawOptions?: Partial<DrawOptions>) {
|
||||||
if (!result?.performance || !inCanvas) return null;
|
if (!result?.performance || !inCanvas) return null;
|
||||||
|
|
102
test/build.log
102
test/build.log
|
@ -1,51 +1,51 @@
|
||||||
2024-10-14 09:05:52 [32mDATA: [39m Build {"name":"@vladmandic/human","version":"3.3.3"}
|
2024-10-24 11:08:06 [32mDATA: [39m Build {"name":"@vladmandic/human","version":"3.3.3"}
|
||||||
2024-10-14 09:05:52 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"3.3.3"}
|
2024-10-24 11:08:06 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"3.3.3"}
|
||||||
2024-10-14 09:05:52 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
2024-10-24 11:08:06 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
||||||
2024-10-14 09:05:52 [36mINFO: [39m Toolchain: {"build":"0.10.1","esbuild":"0.23.1","typescript":"5.5.4","typedoc":"0.26.7","eslint":"8.57.0"}
|
2024-10-24 11:08:06 [36mINFO: [39m Toolchain: {"build":"0.10.1","esbuild":"0.23.1","typescript":"5.5.4","typedoc":"0.26.7","eslint":"8.57.0"}
|
||||||
2024-10-14 09:05:52 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
2024-10-24 11:08:06 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Clean: {"locations":["dist/*","types/*","typedoc/*"]}
|
2024-10-24 11:08:06 [35mSTATE:[39m Clean: {"locations":["dist/*","types/*","typedoc/*"]}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":358}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":358}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":566,"outputBytes":957}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":566,"outputBytes":957}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":80,"inputBytes":677631,"outputBytes":321636}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":80,"inputBytes":678330,"outputBytes":321737}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":574,"outputBytes":965}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":574,"outputBytes":965}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":80,"inputBytes":677639,"outputBytes":321640}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":80,"inputBytes":678338,"outputBytes":321741}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":662,"outputBytes":2003}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":662,"outputBytes":2003}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":80,"inputBytes":678677,"outputBytes":321751}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":80,"inputBytes":679376,"outputBytes":321852}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1403,"outputBytes":690}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1403,"outputBytes":690}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":80,"inputBytes":677364,"outputBytes":320212}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":80,"inputBytes":678063,"outputBytes":320298}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1403,"outputBytes":1267270}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1403,"outputBytes":1267270}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":80,"inputBytes":1943944,"outputBytes":1583214}
|
2024-10-24 11:08:06 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":80,"inputBytes":1944643,"outputBytes":1583296}
|
||||||
2024-10-14 09:05:52 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":80,"inputBytes":1943944,"outputBytes":2067035}
|
2024-10-24 11:08:07 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":80,"inputBytes":1944643,"outputBytes":2067279}
|
||||||
2024-10-14 09:05:54 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types/lib","files":78}
|
2024-10-24 11:08:08 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types/lib","files":78}
|
||||||
2024-10-14 09:05:55 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":81,"generated":true}
|
2024-10-24 11:08:10 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":81,"generated":true}
|
||||||
2024-10-14 09:05:55 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6318,"outputBytes":2970}
|
2024-10-24 11:08:10 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6318,"outputBytes":2970}
|
||||||
2024-10-14 09:05:55 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17502,"outputBytes":9401}
|
2024-10-24 11:08:10 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17498,"outputBytes":9397}
|
||||||
2024-10-14 09:05:55 [35mSTATE:[39m Compile: {"name":"demo/tracker","format":"esm","platform":"browser","input":"demo/tracker/index.ts","output":"demo/tracker/index.js","files":2,"inputBytes":54375,"outputBytes":22791}
|
2024-10-24 11:08:10 [35mSTATE:[39m Compile: {"name":"demo/tracker","format":"esm","platform":"browser","input":"demo/tracker/index.ts","output":"demo/tracker/index.js","files":2,"inputBytes":54375,"outputBytes":22791}
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":171,"errors":0,"warnings":0}
|
2024-10-24 11:08:16 [35mSTATE:[39m Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":171,"errors":0,"warnings":0}
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
2024-10-24 11:08:16 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
|
2024-10-24 11:08:16 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
|
||||||
2024-10-14 09:06:02 [36mINFO: [39m Done...
|
2024-10-24 11:08:16 [36mINFO: [39m Done...
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
|
2024-10-24 11:08:16 [35mSTATE:[39m Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
|
2024-10-24 11:08:16 [35mSTATE:[39m Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
|
2024-10-24 11:08:16 [35mSTATE:[39m Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
|
2024-10-24 11:08:16 [35mSTATE:[39m Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
|
||||||
2024-10-14 09:06:02 [35mSTATE:[39m Filter: {"input":"types/tfjs-core.d.ts"}
|
2024-10-24 11:08:16 [35mSTATE:[39m Filter: {"input":"types/tfjs-core.d.ts"}
|
||||||
2024-10-14 09:06:03 [31mERROR:[39m API-Extractor: {}
|
2024-10-24 11:08:17 [31mERROR:[39m API-Extractor: {}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Filter: {"input":"types/human.d.ts"}
|
2024-10-24 11:08:17 [35mSTATE:[39m Filter: {"input":"types/human.d.ts"}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Write: {"output":"dist/human.esm-nobundle.d.ts"}
|
2024-10-24 11:08:17 [35mSTATE:[39m Write: {"output":"dist/human.esm-nobundle.d.ts"}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Write: {"output":"dist/human.esm.d.ts"}
|
2024-10-24 11:08:17 [35mSTATE:[39m Write: {"output":"dist/human.esm.d.ts"}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Write: {"output":"dist/human.d.ts"}
|
2024-10-24 11:08:17 [35mSTATE:[39m Write: {"output":"dist/human.d.ts"}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Write: {"output":"dist/human.node-gpu.d.ts"}
|
2024-10-24 11:08:17 [35mSTATE:[39m Write: {"output":"dist/human.node-gpu.d.ts"}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Write: {"output":"dist/human.node.d.ts"}
|
2024-10-24 11:08:17 [35mSTATE:[39m Write: {"output":"dist/human.node.d.ts"}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Write: {"output":"dist/human.node-wasm.d.ts"}
|
2024-10-24 11:08:17 [35mSTATE:[39m Write: {"output":"dist/human.node-wasm.d.ts"}
|
||||||
2024-10-14 09:06:03 [36mINFO: [39m Analyze models: {"folders":8,"result":"models/models.json"}
|
2024-10-24 11:08:17 [36mINFO: [39m Analyze models: {"folders":8,"result":"models/models.json"}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"./models","models":12}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"./models","models":12}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"../human-models/models","models":44}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"../human-models/models","models":44}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"../blazepose/model/","models":4}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"../blazepose/model/","models":4}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"../anti-spoofing/model","models":1}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"../anti-spoofing/model","models":1}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"../efficientpose/models","models":3}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"../efficientpose/models","models":3}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"../insightface/models","models":5}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"../insightface/models","models":5}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"../movenet/models","models":3}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"../movenet/models","models":3}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models {"folder":"../nanodet/models","models":4}
|
2024-10-24 11:08:17 [35mSTATE:[39m Models {"folder":"../nanodet/models","models":4}
|
||||||
2024-10-14 09:06:03 [35mSTATE:[39m Models: {"count":58,"totalSize":380063249}
|
2024-10-24 11:08:18 [35mSTATE:[39m Models: {"count":58,"totalSize":380063249}
|
||||||
2024-10-14 09:06:03 [36mINFO: [39m Human Build complete... {"logFile":"test/build.log"}
|
2024-10-24 11:08:18 [36mINFO: [39m Human Build complete... {"logFile":"test/build.log"}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5WZT3PbNhDFvwt7dZtIVtLGN/9RFU+s2mNnmkOmB5hcSajIBQcEFaudfvcOCUkACXCXuu577ydgAVEg9P3fxMCbSa6SDFaizk1ykZTCbJKrRGIGb79sTJH/5LStxCy5mk0+zS7fz/67cGktfrhoobI6h+pdU20JLnmRpBuZZxowufp+iqvSSIWVI+yEluL1xDjoXdbl1BuAyHOXXtWYtgGbFnneTX70h/6qsv1gtBGJbCpwJ6rBtJWJ/EqkMJhuRCK7hsrUejh+0AnCRmA2GG9EIitRmsFsIxJZ9fo3pMNpKxP5EnSlcDBv5SD/l0cohEk34X5ty6M27B1UqZalUdpRzL48MZzexU3ff/p18sHfuMvG/9jf/z7Ld3C0TFZGYHxTWdrRQe1KGd8XFtCoRLiShcyFlib6pbII56FXSWWQV5Flauuj1mnZQ6S5qCqHWEZIk+lv3hi+gEbIH8vKfzAa0M2X84Q5mXrL8+Gjv9CN98UIQ6Kci2LtRC4zYaB1R/tsaR0f2euvgJW/mY+9tvVer73cs8CtSwHWRfWuqXUTfkfnuAvXY447ahUWWpSb3mSPUadRhM91ITAMt2Uq1+/LMWjrP0+o7Dd4vRVFmLV1Knmjsv2twpVcR/eKk6lN0ri+wL5UEs0g5mjgQM9Q9U4HHYyVKQgxHX4qd1r8CJ6RHsHTKczvIoVrNPKlVGpFDCjiY7HGADYD4LBdH4dlaOMgxx8jfnSBk0cbSI3SLNe3cdB5oUaMtePikAsQ3BidhYPda1kxMGfhYA9yBwgVB+zaOOgSqg0DdBYORnz1nUxCZG6AbL9noEALQNAyJUgdB41qT8ckynNQqM8CM4LjZA5CNNrJ7BHjHlcqyjipFOKxPXwT0/ENPIiYkm+gQE/tcZ4A+QYKRCD48AusC0AjmAdTaKOg9iBA4HwDBbrG/W3vVdS+QZwE7sXhGvf3hVhDBNDWR+T/lBmoSL6tc/kbkW4BsznWRR/hSSxFZftrRGUXIAB11PNYN7n4B55UFTRowHYefb5ayVQCGv4TOtYxn7Lo3xM46iJ2RRCnPAjMCqG3McxRO4dD9jMwnUM+NegPMBTc953DX6odMOiD5RxqM0uGerDw1LeQ8salDqepfvJQZtM7QBM8fGyVzb4Z0Cjy+AOsq3Ise46L7ndPGkMZ2u++xnIkriG4ILLVcdnbWufxfKOMY9xJDWlsbXsyR1sAZuFsbJXPto3v/wIfEZ7IkZqD0MAKe9IYytd9GUU0dS7f/iTaA0ywY32N5WBZB/1oi2xSy2qgD57EUewwY51wCsd46t4v2PhT5E4hSD53br9t8Dm49A5z/iErdmDo6xzP3uVM7vqcY31cfjqQn47MXw7kL0fmZwP52cj8g9wGq+EUjvFN6KIuY6vhFPby2v7NFP8b6KARfwGBf7HokoC7/jVdN1aU8bvqVggvTf8H2iG1KjMbAAA="
|
window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5WZT3PbNhDFvwt7dZpIVtLGN/9RFE+s2mN7mkOmB5hcSajIBQeEFKmdfvcOCUkACXCXuu577ydwAVIg+OPfxMDOJFdJBguxyU1ykZTCrJKrRGIGu19Xpsh/cdpaYpZcTUafJ5cfJv9duLQWP120UNkmh+p9XW0ILnmRpCuZZxowufpxiqvSSIWVI2yFluLtxDjobdbl2BuAyHOXXmwwbQI2LfK8nfzkD/1NZfveaC0S2VTgVlS9aSsT+YVIoTddi0R2CZXZ6P74QScIK4FZb7wWiaxEaXqztUhk1dvfkPanrUzkS9CVwt68lYm8AayU7s1bOcj/5REKYdJVuN6b8qAFfwdVqmVp/GGYfXliOL2NG3/4/Nvoo7/w57X/sXv/+CzfwdEyWRmB8UVpaUcHtaplfF1ZQK0S4UoWMhdamuhNaRHOQ8+SyiCvItPU1AfN07yDSHNRVQ4xj5BG49+9MXwDjZA/lpX/YDWg65v7hDmZOtPz8ZM/0bX3xQhDopyLYm1FLjNhoHFH+2xpLR/Z69fOPXXs9WvkZvKn+1ng2qUAN0X1vq61E35Hp7gN52OKW2oWZlqUq87FHqNOowhfN4XAMNyUqVy3L8egrb8bUdnv8HYrijBr61TyRmX7W4ULuYyuFSdTi6R2fYN9qSSaXszRwIGeoersLloYK1MQ4nL4S7nT4mfwjPQInk5hvogUrtHIl1KpBTGgiI/FGgNYD4DDtn0clqENgxz/jPjRBU4ebSA1SrNc38ZBp4UaMNaWi0POQHBjdBYOdq9lxcCchYM9yC0gVBywbeOgc6hWDNBZOBhx6zuZhMjcANl+z0CBZoCgZUqQWg4a1eyuSZTnoFBfBWYEx8kchGi0k9ktxj0uVJRxUinEY7N5Jy7HN/Ag4pJ8AwV6al4HCJBvoEAEgg+/wLIANIJ5MIU2Cmo3AgTON1Cga9zfdl5l7RvESeBeHK5xf1+IJUQATX1A/k+ZgYrkmzqXvxHpGjCb4qboIjyJpahsf42o7AQEoJZ6HusmF//Ak6qCBvXYzqNPFwuZSkDD/0LLOuRXZt1zBkedxY4Y4pQHgVkh9DqGOWrncMh+BqZzyKcG/QGGgvu+c/hztQUGfbCcQ62vkqEeLDx1F1J2XOqwm+omD2U2vQU0wcPHVtnszoBGkccfYG2VY9l9XHS9e9IQSt969zWWI3EJwQGRrQ7L3m50Hs/XyjDGndSQxua2I3O0GWAWXo2t8tmm8d1/4CPCEzlSvRHqmWFPGkJ53ZdRRF3n8s1fot3ABCvW11gOlpugH02RTWpZ9fTBkziKHWasE07hGE/t8wUbf4qcKQTJ59bpuQ0+B4fmYc7fZMU2DF2d49mznNFdl3OsD8uPe/LjgfnLnvzlwPykJz8ZmH+Q62A2nMIxvgtdbMrYbDiFPby2n6nin5EOGvEJCfyDRZcE3HaP6dqxooyfVTdCeGj6P3bjjJFzGwAA"
|
File diff suppressed because one or more lines are too long
|
@ -1,2 +1,2 @@
|
||||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>all | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.all.html">all</a></li></ul><h1>Function all</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="all" class="tsd-anchor"></a><span class="tsd-kind-call-signature">all</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">inCanvas</span>, <span class="tsd-kind-parameter">result</span>, <span class="tsd-kind-parameter">drawOptions</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">></span><a href="#all" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>meta-function that performs draw for: canvas, face, body, hand</p>
|
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>all | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.all.html">all</a></li></ul><h1>Function all</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="all" class="tsd-anchor"></a><span class="tsd-kind-call-signature">all</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">inCanvas</span>, <span class="tsd-kind-parameter">result</span>, <span class="tsd-kind-parameter">drawOptions</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">></span><a href="#all" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>meta-function that performs draw for: canvas, face, body, hand</p>
|
||||||
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">inCanvas</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a></span></li><li><span><span class="tsd-kind-parameter">result</span>: <a href="../interfaces/Result.html" class="tsd-signature-type tsd-kind-interface">Result</a></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">drawOptions</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">></span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L64">src/draw/draw.ts:64</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">inCanvas</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a></span></li><li><span><span class="tsd-kind-parameter">result</span>: <a href="../interfaces/Result.html" class="tsd-signature-type tsd-kind-interface">Result</a></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">drawOptions</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">></span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L82">src/draw/draw.ts:82</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>canvas | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.canvas.html">canvas</a></li></ul><h1>Function canvas</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="canvas" class="tsd-anchor"></a><span class="tsd-kind-call-signature">canvas</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">input</span>, <span class="tsd-kind-parameter">output</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#canvas" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>draw processed canvas</p>
|
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>canvas | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.canvas.html">canvas</a></li></ul><h1>Function canvas</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="canvas" class="tsd-anchor"></a><span class="tsd-kind-call-signature">canvas</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">input</span>, <span class="tsd-kind-parameter">output</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#canvas" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>draw processed canvas</p>
|
||||||
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">input</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">HTMLImageElement</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">HTMLVideoElement</span></span></li><li><span><span class="tsd-kind-parameter">output</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L56">src/draw/draw.ts:56</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">input</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">HTMLImageElement</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">HTMLVideoElement</span></span></li><li><span><span class="tsd-kind-parameter">output</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L58">src/draw/draw.ts:58</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>init | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.init.html">init</a></li></ul><h1>Function init</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="init" class="tsd-anchor"></a><span class="tsd-kind-call-signature">init</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#init" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>sets default label templates for face/body/hand/object/gestures</p>
|
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>init | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.init.html">init</a></li></ul><h1>Function init</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="init" class="tsd-anchor"></a><span class="tsd-kind-call-signature">init</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#init" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>sets default label templates for face/body/hand/object/gestures</p>
|
||||||
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L82">src/draw/draw.ts:82</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L100">src/draw/draw.ts:100</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>person | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.person.html">person</a></li></ul><h1>Function person</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="person" class="tsd-anchor"></a><span class="tsd-kind-call-signature">person</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">inCanvas</span>, <span class="tsd-kind-parameter">result</span>, <span class="tsd-kind-parameter">drawOptions</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#person" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>draw combined person results instead of individual detection result objects</p>
|
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>person | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.person.html">person</a></li></ul><h1>Function person</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="person" class="tsd-anchor"></a><span class="tsd-kind-call-signature">person</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">inCanvas</span>, <span class="tsd-kind-parameter">result</span>, <span class="tsd-kind-parameter">drawOptions</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#person" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>draw combined person results instead of individual detection result objects</p>
|
||||||
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">inCanvas</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a></span></li><li><span><span class="tsd-kind-parameter">result</span>: <a href="../interfaces/PersonResult.html" class="tsd-signature-type tsd-kind-interface">PersonResult</a><span class="tsd-signature-symbol">[]</span></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">drawOptions</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">></span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L28">src/draw/draw.ts:28</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">inCanvas</span>: <a href="../types/AnyCanvas.html" class="tsd-signature-type tsd-kind-type-alias">AnyCanvas</a></span></li><li><span><span class="tsd-kind-parameter">result</span>: <a href="../interfaces/PersonResult.html" class="tsd-signature-type tsd-kind-interface">PersonResult</a><span class="tsd-signature-symbol">[]</span></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">drawOptions</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">></span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L30">src/draw/draw.ts:30</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>tensor | @vladmandic/human - v3.3.3</title><meta name="description" content="Documentation for @vladmandic/human"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v3.3.3</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human</a></li><li><a href="../modules/draw.html">draw</a></li><li><a href="draw.tensor.html">tensor</a></li></ul><h1>Function tensor</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="tensor" class="tsd-anchor"></a><span class="tsd-kind-call-signature">tensor</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">input</span>, <span class="tsd-kind-parameter">output</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span><a href="#tensor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>draw processed canvas</p>
|
||||||
|
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">input</span>: <a href="../types/Tensor2D.html" class="tsd-signature-type tsd-kind-type-alias">Tensor2D</a></span></li><li><span><span class="tsd-kind-parameter">output</span>: <span class="tsd-signature-type">HTMLCanvasElement</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/draw/draw.ts#L66">src/draw/draw.ts:66</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
|
@ -9,4 +9,5 @@
|
||||||
<a href="../functions/draw.init.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>init</span></a>
|
<a href="../functions/draw.init.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>init</span></a>
|
||||||
<a href="../functions/draw.object.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>object</span></a>
|
<a href="../functions/draw.object.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>object</span></a>
|
||||||
<a href="../functions/draw.person.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>person</span></a>
|
<a href="../functions/draw.person.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>person</span></a>
|
||||||
|
<a href="../functions/draw.tensor.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>tensor</span></a>
|
||||||
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vladmandic/human - v3.3.3</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
||||||
|
|
|
@ -195,6 +195,7 @@ declare namespace draw {
|
||||||
export {
|
export {
|
||||||
person,
|
person,
|
||||||
canvas,
|
canvas,
|
||||||
|
tensor,
|
||||||
all,
|
all,
|
||||||
init,
|
init,
|
||||||
options,
|
options,
|
||||||
|
|
Loading…
Reference in New Issue