face-api.js
Version:
JavaScript API for face detection and face recognition in the browser with tensorflow.js
59 lines • 3.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var utils_1 = require("../utils");
var awaitMediaLoaded_1 = require("./awaitMediaLoaded");
var isMediaElement_1 = require("./isMediaElement");
var NetInput_1 = require("./NetInput");
var resolveInput_1 = require("./resolveInput");
/**
* Validates the input to make sure, they are valid net inputs and awaits all media elements
* to be finished loading.
*
* @param input The input, which can be a media element or an array of different media elements.
* @returns A NetInput instance, which can be passed into one of the neural networks.
*/
function toNetInput(inputs) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var inputArgArray, getIdxHint, inputArray;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (inputs instanceof NetInput_1.NetInput) {
return [2 /*return*/, inputs];
}
inputArgArray = Array.isArray(inputs)
? inputs
: [inputs];
if (!inputArgArray.length) {
throw new Error('toNetInput - empty array passed as input');
}
getIdxHint = function (idx) { return Array.isArray(inputs) ? " at input index " + idx + ":" : ''; };
inputArray = inputArgArray.map(resolveInput_1.resolveInput);
inputArray.forEach(function (input, i) {
if (!isMediaElement_1.isMediaElement(input) && !utils_1.isTensor3D(input) && !utils_1.isTensor4D(input)) {
if (typeof inputArgArray[i] === 'string') {
throw new Error("toNetInput -" + getIdxHint(i) + " string passed, but could not resolve HTMLElement for element id " + inputArgArray[i]);
}
throw new Error("toNetInput -" + getIdxHint(i) + " expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id");
}
if (utils_1.isTensor4D(input)) {
// if tf.Tensor4D is passed in the input array, the batch size has to be 1
var batchSize = input.shape[0];
if (batchSize !== 1) {
throw new Error("toNetInput -" + getIdxHint(i) + " tf.Tensor4D with batchSize " + batchSize + " passed, but not supported in input array");
}
}
});
// wait for all media elements being loaded
return [4 /*yield*/, Promise.all(inputArray.map(function (input) { return isMediaElement_1.isMediaElement(input) && awaitMediaLoaded_1.awaitMediaLoaded(input); }))];
case 1:
// wait for all media elements being loaded
_a.sent();
return [2 /*return*/, new NetInput_1.NetInput(inputArray, Array.isArray(inputs))];
}
});
});
}
exports.toNetInput = toNetInput;
//# sourceMappingURL=toNetInput.js.map
;