From de0fa69417e86ead8ff97685073f2a73a9c42b4d Mon Sep 17 00:00:00 2001 From: James Ketrenos Date: Wed, 28 Nov 2018 01:11:06 -0800 Subject: [PATCH] Integrating face recognition Signed-off-by: James Ketrenos --- face.js | 35 +++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 36 insertions(+) create mode 100644 face.js diff --git a/face.js b/face.js new file mode 100644 index 0000000..f1930c5 --- /dev/null +++ b/face.js @@ -0,0 +1,35 @@ +const fr = require('face-recognition') + +if (process.argc <= 2) { + console.log("Usage: node face image"); + process.exit(-1); +} + +const filename = process.argv[2]; + +console.log("Loading " + filename); +const image = fr.loadImage(filename) +const detector = fr.FaceDetector() + +console.log("Detecting faces..."); +const faceRectangles = detector.locateFaces(image) + +/* 200x200 picture faces */ +const faceImages = detector.detectFaces(image, 200) +console.log("Writing " + faceImages.length + " faces."); + +const fs = require("fs"), + path = require("path"); +const filepath = path.dirname(filename) + "/faces"; +try { + fs.statSync(filepath); +} catch (error) { + fs.mkdirSync(filepath); +} + +faceImages.forEach(function(face, index) { + let target = filepath + "/" + path.basename(filename).replace(/.(png|jpg|jpeg)$/, "-face-" + (index + 1)); + faceRectangles[index].filename = filename; + fs.writeFileSync(target + ".nfo", JSON.stringify(faceRectangles[index], null, 2)); + fr.saveImage(target + ".png", face); +}); diff --git a/package.json b/package.json index 6071bc4..1771921 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "exif-reader": "github:paras20xx/exif-reader", "express": "^4.16.2", "express-session": "^1.15.6", + "face-recognition": "^0.9.4", "handlebars": "^4.0.12", "ldapauth-fork": "^4.0.2", "mariasql": "^0.2.6",