12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var tslib_1 = require("tslib");
- var FaceDetection_1 = require("../classes/FaceDetection");
- var env_1 = require("../env");
- var createCanvas_1 = require("./createCanvas");
- var getContext2dOrThrow_1 = require("./getContext2dOrThrow");
- var imageTensorToCanvas_1 = require("./imageTensorToCanvas");
- var toNetInput_1 = require("./toNetInput");
- /**
- * Extracts the image regions containing the detected faces.
- *
- * @param input The image that face detection has been performed on.
- * @param detections The face detection results or face bounding boxes for that image.
- * @returns The Canvases of the corresponding image region for each detected face.
- */
- function extractFaces(input, detections) {
- return tslib_1.__awaiter(this, void 0, void 0, function () {
- var Canvas, canvas, netInput, tensorOrCanvas, _a, ctx, boxes;
- return tslib_1.__generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- Canvas = env_1.env.getEnv().Canvas;
- canvas = input;
- if (!!(input instanceof Canvas)) return [3 /*break*/, 5];
- return [4 /*yield*/, toNetInput_1.toNetInput(input)];
- case 1:
- netInput = _b.sent();
- if (netInput.batchSize > 1) {
- throw new Error('extractFaces - batchSize > 1 not supported');
- }
- tensorOrCanvas = netInput.getInput(0);
- if (!(tensorOrCanvas instanceof Canvas)) return [3 /*break*/, 2];
- _a = tensorOrCanvas;
- return [3 /*break*/, 4];
- case 2: return [4 /*yield*/, imageTensorToCanvas_1.imageTensorToCanvas(tensorOrCanvas)];
- case 3:
- _a = _b.sent();
- _b.label = 4;
- case 4:
- canvas = _a;
- _b.label = 5;
- case 5:
- ctx = getContext2dOrThrow_1.getContext2dOrThrow(canvas);
- boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection
- ? det.forSize(canvas.width, canvas.height).box.floor()
- : det; })
- .map(function (box) { return box.clipAtImageBorders(canvas.width, canvas.height); });
- return [2 /*return*/, boxes.map(function (_a) {
- var x = _a.x, y = _a.y, width = _a.width, height = _a.height;
- var faceImg = createCanvas_1.createCanvas({ width: width, height: height });
- getContext2dOrThrow_1.getContext2dOrThrow(faceImg)
- .putImageData(ctx.getImageData(x, y, width, height), 0, 0);
- return faceImg;
- })];
- }
- });
- });
- }
- exports.extractFaces = extractFaces;
- //# sourceMappingURL=extractFaces.js.map
|