| | |
| | | require("@tensorflow/tfjs-node"); |
| | | const logger = require('./logger'); // 引入上面创建的logger |
| | | const fs= require ('fs'); |
| | | const express = require("express"); |
| | | const moment = require("moment"); |
| | |
| | | console.log(`Progress = ${counter}%`); |
| | | // Read each face and save the face descriptions in the descriptions array |
| | | const detections = await faceapi.detectSingleFace(img).withFaceLandmarks().withFaceDescriptor(); |
| | | descriptions.push(detections.descriptor); |
| | | imgs.push(images[i]) |
| | | if(detections.descriptor){ |
| | | descriptions.push(detections.descriptor); |
| | | imgs.push(images[i]) |
| | | } |
| | | |
| | | } |
| | | console.log(descriptions,images) |
| | | if(descriptions==[]){ |
| | | console.log('人脸读取有错误') |
| | | return false |
| | | } |
| | | //用给定的标签创建一个新的面文档,并将其保存在数据库中 |
| | | const createFace = new FaceModel({ |
| | |
| | | imgs.push(req.files[i].path) |
| | | } |
| | | let label = req.body.label |
| | | logger.info(`上传${label}人脸信息`) |
| | | console.log('---------------',label) |
| | | let result = await uploadLabeledImages(imgs, label); |
| | | console.log('---------------',result) |
| | | if(result===true){ |
| | | |
| | | logger.info(`上传${label}人脸信息成功`) |
| | | res.json({code:200, message:"录入成功"}) |
| | | }else{ |
| | | // let result = await getDescriptorsFromDB(File1); |
| | |
| | | } |
| | | }) |
| | | }) |
| | | |
| | | logger.info(`删除${label}人脸信息,录入失败`) |
| | | res.json({code:400, message:"人脸模型录入失败,请重新录入"}) |
| | | |
| | | } |
| | | }) |
| | | /**验证人脸对比 */ |
| | | app.post("/check-face",upload.single('file'), async (req, res) => { |
| | | console.log(req.file) |
| | | const File1 = req.file.path; |
| | | logger.info(`验证人脸信息识别:${File1}`) |
| | | try { |
| | | let result = await getDescriptorsFromDB(File1); |
| | | fs.unlink(File1,(err)=>{ |
| | |
| | | }); |
| | | // 获取人脸模型 |
| | | app.post('/get-face',upload.single('file'),async (req, res) => { |
| | | const label = req.body.label |
| | | const result=await FaceModel.findOne({ "label": label }) |
| | | res.json({code:200,result}) |
| | | |
| | | try{ |
| | | const label = req.body.label |
| | | logger.info(`获取人脸模型:${label}`) |
| | | const result=await FaceModel.findOne({ "label": label }) |
| | | logger.info(`返回人脸模型:${label}:${JSON.stringify(result)}`) |
| | | res.json({code:200,result}) |
| | | }catch(error){ |
| | | res.json({code:200,error}) |
| | | } |
| | | |
| | | }) |
| | | // 清除人脸模型 |
| | | app.post("/del-face",upload.single('file'),async(req,res)=>{ |
| | | const label = req.body.label |
| | | console.log('删除人脸库',label) |
| | | logger.info(`删除人脸库${label}`) |
| | | FaceModel.findOne({ "label": label }).then(re=>{ |
| | | console.log('kankan---') |
| | | console.log(re.images) |
| | |
| | | }) |
| | | let result= deleteLabelImages(label) |
| | | if(result){ |
| | | logger.info(`删除人脸库${label};成功`) |
| | | res.json({message:'success'}) |
| | | |
| | | }else{ |
| | | logger.info(`删除人脸库${label};失败`) |
| | | res.json({message:"err"}) |
| | | } |
| | | }) |
| | |
| | | } |
| | | ) |
| | | .then(() => { |
| | | app.listen(process.env.PORT || 5000); |
| | | app.listen(process.env.PORT || 80,'0.0.0.0'); |
| | | console.log("DB connected and server us running."); |
| | | console.log('http-sse-'+5000) |
| | | console.log('http-sse-'+80) |
| | | logger.info('数据库连接成功,服务已启动,端口号80') |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err); |