UNPKG

@vladmandic/human

Version:

Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gesture Recognition

31 lines (29 loc) 1.28 kB
import { mergeDeep } from '../util/util'; import { getCanvasContext, replace, labels } from './primitives'; import { options } from './options'; import type { GestureResult } from '../result'; import type { AnyCanvas, DrawOptions } from '../exports'; /** draw detected gestures */ export function gesture(inCanvas: AnyCanvas, result: GestureResult[], drawOptions?: Partial<DrawOptions>) { const localOptions: DrawOptions = mergeDeep(options, drawOptions); if (!result || !inCanvas) return; if (localOptions.drawGestures && (localOptions.gestureLabels?.length > 0)) { const ctx = getCanvasContext(inCanvas) as CanvasRenderingContext2D; if (!ctx) return; ctx.font = localOptions.font; ctx.fillStyle = localOptions.color; let i = 1; for (let j = 0; j < result.length; j++) { const [where, what] = Object.entries(result[j]); if ((what.length > 1) && ((what[1] as string).length > 0)) { const who = where[1] as number > 0 ? `#${where[1]}` : ''; let l = localOptions.gestureLabels.slice(); l = replace(l, '[where]', where[0]); l = replace(l, '[who]', who); l = replace(l, '[what]', what[1]); labels(ctx, l, 8, 2 + (i * localOptions.lineHeight), localOptions); i += 1; } } } }