add human.draw.tensor method

Signed-off-by: Vladimir Mandic <mandic00@live.com>
main
Vladimir Mandic 2024-10-24 11:09:45 -04:00
parent 2b0a2fecc2
commit c1dc719a67
26 changed files with 224 additions and 196 deletions

View File

@ -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

View File

@ -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

View File

@ -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';

View File

@ -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"';

View File

@ -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);
} }

View File

@ -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

124
dist/human.esm.js vendored
View File

@ -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

82
dist/human.js vendored

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

12
dist/human.node.js vendored

File diff suppressed because one or more lines are too long

View File

@ -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;

View File

@ -1,51 +1,51 @@
2024-10-14 09:05:52 DATA:  Build {"name":"@vladmandic/human","version":"3.3.3"} 2024-10-24 11:08:06 DATA:  Build {"name":"@vladmandic/human","version":"3.3.3"}
2024-10-14 09:05:52 INFO:  Application: {"name":"@vladmandic/human","version":"3.3.3"} 2024-10-24 11:08:06 INFO:  Application: {"name":"@vladmandic/human","version":"3.3.3"}
2024-10-14 09:05:52 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} 2024-10-24 11:08:06 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
2024-10-14 09:05:52 INFO:  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 INFO:  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 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} 2024-10-24 11:08:06 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
2024-10-14 09:05:52 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]} 2024-10-24 11:08:06 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]}
2024-10-14 09:05:52 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":78} 2024-10-24 11:08:08 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":78}
2024-10-14 09:05:55 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":81,"generated":true} 2024-10-24 11:08:10 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":81,"generated":true}
2024-10-14 09:05:55 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: 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 STATE: Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":171,"errors":0,"warnings":0} 2024-10-24 11:08:16 STATE: Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":171,"errors":0,"warnings":0}
2024-10-14 09:06:02 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} 2024-10-24 11:08:16 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
2024-10-14 09:06:02 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"} 2024-10-24 11:08:16 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
2024-10-14 09:06:02 INFO:  Done... 2024-10-24 11:08:16 INFO:  Done...
2024-10-14 09:06:02 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"} 2024-10-24 11:08:16 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
2024-10-14 09:06:02 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"} 2024-10-24 11:08:16 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
2024-10-14 09:06:02 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"} 2024-10-24 11:08:16 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
2024-10-14 09:06:02 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"} 2024-10-24 11:08:16 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
2024-10-14 09:06:02 STATE: Filter: {"input":"types/tfjs-core.d.ts"} 2024-10-24 11:08:16 STATE: Filter: {"input":"types/tfjs-core.d.ts"}
2024-10-14 09:06:03 ERROR: API-Extractor: {} 2024-10-24 11:08:17 ERROR: API-Extractor: {}
2024-10-14 09:06:03 STATE: Filter: {"input":"types/human.d.ts"} 2024-10-24 11:08:17 STATE: Filter: {"input":"types/human.d.ts"}
2024-10-14 09:06:03 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"} 2024-10-24 11:08:17 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"}
2024-10-14 09:06:03 STATE: Write: {"output":"dist/human.esm.d.ts"} 2024-10-24 11:08:17 STATE: Write: {"output":"dist/human.esm.d.ts"}
2024-10-14 09:06:03 STATE: Write: {"output":"dist/human.d.ts"} 2024-10-24 11:08:17 STATE: Write: {"output":"dist/human.d.ts"}
2024-10-14 09:06:03 STATE: Write: {"output":"dist/human.node-gpu.d.ts"} 2024-10-24 11:08:17 STATE: Write: {"output":"dist/human.node-gpu.d.ts"}
2024-10-14 09:06:03 STATE: Write: {"output":"dist/human.node.d.ts"} 2024-10-24 11:08:17 STATE: Write: {"output":"dist/human.node.d.ts"}
2024-10-14 09:06:03 STATE: Write: {"output":"dist/human.node-wasm.d.ts"} 2024-10-24 11:08:17 STATE: Write: {"output":"dist/human.node-wasm.d.ts"}
2024-10-14 09:06:03 INFO:  Analyze models: {"folders":8,"result":"models/models.json"} 2024-10-24 11:08:17 INFO:  Analyze models: {"folders":8,"result":"models/models.json"}
2024-10-14 09:06:03 STATE: Models {"folder":"./models","models":12} 2024-10-24 11:08:17 STATE: Models {"folder":"./models","models":12}
2024-10-14 09:06:03 STATE: Models {"folder":"../human-models/models","models":44} 2024-10-24 11:08:17 STATE: Models {"folder":"../human-models/models","models":44}
2024-10-14 09:06:03 STATE: Models {"folder":"../blazepose/model/","models":4} 2024-10-24 11:08:17 STATE: Models {"folder":"../blazepose/model/","models":4}
2024-10-14 09:06:03 STATE: Models {"folder":"../anti-spoofing/model","models":1} 2024-10-24 11:08:17 STATE: Models {"folder":"../anti-spoofing/model","models":1}
2024-10-14 09:06:03 STATE: Models {"folder":"../efficientpose/models","models":3} 2024-10-24 11:08:17 STATE: Models {"folder":"../efficientpose/models","models":3}
2024-10-14 09:06:03 STATE: Models {"folder":"../insightface/models","models":5} 2024-10-24 11:08:17 STATE: Models {"folder":"../insightface/models","models":5}
2024-10-14 09:06:03 STATE: Models {"folder":"../movenet/models","models":3} 2024-10-24 11:08:17 STATE: Models {"folder":"../movenet/models","models":3}
2024-10-14 09:06:03 STATE: Models {"folder":"../nanodet/models","models":4} 2024-10-24 11:08:17 STATE: Models {"folder":"../nanodet/models","models":4}
2024-10-14 09:06:03 STATE: Models: {"count":58,"totalSize":380063249} 2024-10-24 11:08:18 STATE: Models: {"count":58,"totalSize":380063249}
2024-10-14 09:06:03 INFO:  Human Build complete... {"logFile":"test/build.log"} 2024-10-24 11:08:18 INFO:  Human Build complete... {"logFile":"test/build.log"}

View File

@ -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

View File

@ -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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</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">&gt;</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">&lt;</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</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">&gt;</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>

View File

@ -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>

View File

@ -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>

View File

@ -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">&lt;</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">&gt;</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">&lt;</span><a href="../interfaces/DrawOptions.html" class="tsd-signature-type tsd-kind-interface">DrawOptions</a><span class="tsd-signature-symbol">&gt;</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>

View File

@ -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">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</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">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</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>

View File

@ -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>

1
types/human.d.ts vendored
View File

@ -195,6 +195,7 @@ declare namespace draw {
export { export {
person, person,
canvas, canvas,
tensor,
all, all,
init, init,
options, options,