34
chenyc
2025-02-10 e111de12fc32a4f0919264bfe0ee806d4bfd634c
app.js
@@ -1,4 +1,5 @@
require("@tensorflow/tfjs-node");
const logger = require('./logger'); // 引入上面创建的logger
const fs= require ('fs');
const express = require("express");
const moment = require("moment");
@@ -21,7 +22,7 @@
    cb(null, './uploads')
  },
  filename(req, file, cb) {
    cb(null, Date.now() + '-' + file.originalname)
    cb(null, Date.now() + 'face')
  }
})
// 加载文件存储
@@ -79,8 +80,16 @@
      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({
@@ -167,11 +176,12 @@
      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);
@@ -184,15 +194,15 @@
            }
          })
        })
        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)=>{
@@ -211,14 +221,22 @@
});
// 获取人脸模型
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)
@@ -236,9 +254,11 @@
  })
  let result= deleteLabelImages(label)
  if(result){
    logger.info(`删除人脸库${label};成功`)
    res.json({message:'success'})
  }else{
    logger.info(`删除人脸库${label};失败`)
    res.json({message:"err"})
  }
})
@@ -261,9 +281,10 @@
    }
  )
  .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);