Node.js—读取目录下的所有文件路径,并导出脸部表情数据

本文介绍了如何在Node.js环境中读取指定目录下的所有图片文件路径,并利用face-api.js库处理脸部表情数据。在尝试直接在读取文件的函数中处理数据时遇到了错误,通过使用异步for循环解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于一门课程作业主题与脸部数据识别有关,在GitHub上找到了一个开源代码库face-api.js(https://github.com/justadudewhohacks/face-api.js),想要识别在Instagram上抓取所图片的脸部数据,其过程如下:

1. 读取所有图片路径

在node.js中读取folders中的文件,可以用fs.readFile,假设我所有的图片都放在test这个文件夹下面,其方法如下:

const fs = require('fs')
const path = require('path')

const folderPath = '../images/test'

const readFileDir = fs.readdirSync(folderPath).map((fileName: any) => {
   const fullPath = path.join(folderPath, fileName)
   return fullPath
  })

这个时候,console.log(readFileDir)就可以看到…/images/test路径下的所有文件,typeof readFileDir[0]是string

2. 读取所有脸部表情数据:

for (let i = 0; i < readFileDir.length; i++) {
  const img = await canvas.loadImage(`${readFileDir[i]}`)
  const results = await faceapi.detectAllFaces(img, faceDetectionOptions)
    .withFaceExpressions()
  results.forEach(el => {
    console.log(el.expressions)
  }}
  }

写到这里的时候遇到一个问题,有同学会想,为什么不能直接在readFileDir这个变量代表的function里,比如我刚开始的时候就是这么写的:

 readFileTest.forEach(el => {
    const img = await canvas.loadImage('el')
    const results = await faceapi.detectAllFaces(img, faceDetectionOptions)
        .withFaceExpressions();
    results.forEach(el => {
      console.log(el.expressions)
      })

这时候会报错:

'await' expressions are only allowed within async functions and at the 
top levels of modules.

所以本人改用for循环,stackoverlfow上提供了另一个解决方案:
Your main function is async but you’re using await in an arrow function which isn’t declared as async

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值