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