使用Face api获取javascript中的人脸识别;未捕获(承诺中)类型错误:无法读取属性';描述符';“未定义”的定义;

使用Face api获取javascript中的人脸识别;未捕获(承诺中)类型错误:无法读取属性';描述符';“未定义”的定义;,javascript,artificial-intelligence,typeerror,face-recognition,Javascript,Artificial Intelligence,Typeerror,Face Recognition,在使用web应用程序的node js在浏览器的网络摄像头上实现人脸识别时面临此问题。仅当我在loadLabeledImages()函数的标签中添加多个名称时,才会出现此错误。如果我有一个名字,它工作得很好。我和这里的初学者已经犯了好几天同样的错误了 如果我记录调整大小的检测和检测,我会得到以下结果: 非常感谢您的帮助,非常感谢 setInterval(async () => { const detections = await faceapi.detectSingleFace(video

在使用web应用程序的node js在浏览器的网络摄像头上实现人脸识别时面临此问题。仅当我在loadLabeledImages()函数的标签中添加多个名称时,才会出现此错误。如果我有一个名字,它工作得很好。我和这里的初学者已经犯了好几天同样的错误了

如果我记录调整大小的检测和检测,我会得到以下结果:

非常感谢您的帮助,非常感谢

setInterval(async () => {
const detections = await faceapi.detectSingleFace(video).withFaceLandmarks().withFaceDescriptor()
const resizedDetections = faceapi.resizeResults(detections, displaySize)
canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height)
faceapi.draw.drawFaceLandmarks(canvas, resizedDetections)
this.labeledFaceDescriptors = await this.loadLabeledImages()
const faceMatcher = new faceapi.FaceMatcher(labeledFaceDescriptors, 0.6)
const results = resizedDetections.map(d => faceMatcher.findBestMatch(d.descriptor))
results.forEach((result, i) => {
  const box = resizedDetections[i].detection.box
  const drawBox = new faceapi.draw.DrawBox(box, {label: result.toString()})
  drawBox.draw(canvas) 
})

}, 100) 
})

function loadLabeledImages() {

try{
const labels = ['Jane', 'Alex']

return Promise.all(
  labels.map(async label => {
    const descriptions = []
    for (let i = 1; i <= 3; i++) {
      const img = await faceapi.fetchImage(`public/img/${label}/${i}.jpg`)
      const detections = await faceapi.detectSingleFace(img).withFaceLandmarks().withFaceDescriptor()
      descriptions.push(detections.descriptor)
    }

    return new faceapi.LabeledFaceDescriptors(label, this.descriptions)
  })
)

    }
   catch(err){
     console.log(err)
     }

       }
setInterval(异步()=>{
const detections=等待faceapi.detectSingleFace(视频).withFaceLandmarks().withFaceDescriptor()
const resizedDetections=faceapi.resizeResults(检测,显示大小)
canvas.getContext('2d').clearRect(0,0,canvas.width,canvas.height)
faceapi.draw.drawFaceLandmarks(画布、大小检测)
this.labeledFaceDescriptors=等待this.loadLabeledImages()
const faceMatcher=new faceapi.faceMatcher(labeledFaceDescriptors,0.6)
const results=resizedDetections.map(d=>faceMatcher.findBestMatch(d.descriptor))
results.forEach((result,i)=>{
const-box=resizedDetections[i].detection.box
const drawBox=new faceapi.draw.drawBox(框,{label:result.toString()})
drawBox.draw(画布)
})
}, 100) 
})
函数loadLabeledImages(){
试一试{
常量标签=['Jane','Alex']
回报你的承诺(
labels.map(异步标签=>{
常量描述=[]

对于(设i=1;i'descriptor'值未定义..因此您收到错误

对于延迟,我的问题通过更改图像得到解决。错误是因为无法识别人脸(描述符)在我提供的图像中。我检查了图像的质量,质量非常差,因此我将它们更改为质量良好的图像,错误消失了。

是的,我理解。我尝试在谷歌上搜索所有未定义错误的内容,但似乎没有任何效果。我赋予了它价值,它可以与一个人完美配合。但它返回undefined当它与多人一起运行时。我不知道为什么它没有定义,我可以做些什么来修复它。感谢您回复日志
检测(在loadLabeledImages函数的for循环中)
resizedDetections(在setInterval函数中)
并检查值。检查将值分配给这些变量的函数的返回类型。我尝试按照您所说的记录这两个函数,并且检测是一个对象,下一次未定义。我编辑了我的问题并添加了错误图像。我不确定发生了什么。感谢您的帮助尝试
JSON.stringify()
查看日志记录时的实际数据。还要检查
img
是否为null或未定义。使用JSON.stringify转换对象:对象输出其假设用于调整大小的检测和检测的长x和y数字数据。并且每一个其他检测都未定义。img不为null,我之前已经检查过了如果我在标签数组中只保留一个名称,它将非常有效。