Javascript 无法读取属性';长度';face-api.js中未定义的 import React,{useRef,useState,useffect}来自'React'; 从“face api.js”导入*作为faceapi; 函数App(){ const videoRef=useRef(空); const canvasRef=useRef(null); useffect(()=>{ const loadModels=async()=>{ 试一试{ const MODEL_URL='/models' 我保证([ faceapi.nets.tinyFaceDetector.loadFromUri(模型URL), faceapi.nets.faceLandmark68Net.loadFromUri(模型URL), faceapi.nets.faceRecognitionNet.loadFromUri(模型URL), faceapi.nets.faceExpressionNet.loadFromUri(模型URL), ]).然后(startVideo()) }捕获(错误){ 控制台错误(错误) } } loadModels(); }, []) const startVideo=async()=>{ 试一试{ 让stream=null; stream=Wait navigator.mediaDevices.getUserMedia({audio:true,video:true}); videoRef.current.srcObject=流; }捕获(错误){ 控制台错误(错误) } } const handleVideoOnPlay=()=>{ setInterval(异步()=>{ const detections=等待faceapi。 detectAllFaces(videoRef.current,new faceapi.TinyFaceDetectorOptions()) .withFaceLandmarks() .withFaceExpressions() }, 100) } 返回( ); } 导出默认应用程序;

Javascript 无法读取属性';长度';face-api.js中未定义的 import React,{useRef,useState,useffect}来自'React'; 从“face api.js”导入*作为faceapi; 函数App(){ const videoRef=useRef(空); const canvasRef=useRef(null); useffect(()=>{ const loadModels=async()=>{ 试一试{ const MODEL_URL='/models' 我保证([ faceapi.nets.tinyFaceDetector.loadFromUri(模型URL), faceapi.nets.faceLandmark68Net.loadFromUri(模型URL), faceapi.nets.faceRecognitionNet.loadFromUri(模型URL), faceapi.nets.faceExpressionNet.loadFromUri(模型URL), ]).然后(startVideo()) }捕获(错误){ 控制台错误(错误) } } loadModels(); }, []) const startVideo=async()=>{ 试一试{ 让stream=null; stream=Wait navigator.mediaDevices.getUserMedia({audio:true,video:true}); videoRef.current.srcObject=流; }捕获(错误){ 控制台错误(错误) } } const handleVideoOnPlay=()=>{ setInterval(异步()=>{ const detections=等待faceapi。 detectAllFaces(videoRef.current,new faceapi.TinyFaceDetectorOptions()) .withFaceLandmarks() .withFaceExpressions() }, 100) } 返回( ); } 导出默认应用程序;,javascript,reactjs,tensorflow.js,face-api,Javascript,Reactjs,Tensorflow.js,Face Api,大家好,这是我的代码,我遵循了一个教程 我得到这个错误信息: 有人知道问题出在哪里吗?我做了所有的事情,我不知道怎么了,非常感谢你的帮助 erorr是videoRef。当前值为空,只需将其包装进去即可 import React, { useRef, useState, useEffect } from 'react'; import * as faceapi from 'face-api.js'; function App() { const videoRef = useRef(nul

大家好,这是我的代码,我遵循了一个教程

我得到这个错误信息:


有人知道问题出在哪里吗?我做了所有的事情,我不知道怎么了,非常感谢你的帮助

erorr是videoRef。当前值为空,只需将其包装进去即可

import React, { useRef, useState, useEffect } from 'react';
import * as faceapi from 'face-api.js';


function App() {
  const videoRef = useRef(null);
  const canvasRef = useRef(null);
  useEffect(() => {
    const loadModels = async () => {
      try {
        const MODEL_URL = '/models'
        Promise.all([
          faceapi.nets.tinyFaceDetector.loadFromUri(MODEL_URL),
          faceapi.nets.faceLandmark68Net.loadFromUri(MODEL_URL),
          faceapi.nets.faceRecognitionNet.loadFromUri(MODEL_URL),
          faceapi.nets.faceExpressionNet.loadFromUri(MODEL_URL),
        ]).then(startVideo())
      } catch (error) {
        console.error(error)
      }

    }
    loadModels();

  }, [])
  const startVideo = async () => {
    try {
      let stream = null;
      stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
      videoRef.current.srcObject = stream;
    } catch (error) {
      console.error(error)
    }
  }

  const handleVideoOnPlay = () => {
    setInterval(async () => {
      const detections = await faceapi.
        detectAllFaces(videoRef.current, new faceapi.TinyFaceDetectorOptions())
        .withFaceLandmarks()
        .withFaceExpressions()
    }, 100)
  }
  return (
    <div className="App">
      <video ref={videoRef} autoPlay muted onPlay={handleVideoOnPlay} height={640} width={640} />
      <canvas ref={canvasRef} />
    </div>
  );
}

export default App;

我找到了解决这个问题的方法

当使用faceapi.detectAllFaces时,您应该这样做

const detections=wait faceapi.detectAllFaces(videoRef.current).withFaceLandmarks().withFaceDescriptors().withFaceExpressions()

必须包括.withFaceDescriptors()

请注意,它是。withFaceDescriptor()而不是。withFaceDescriptor()

如果要检测所有面并删除一个面,则应添加s

if(videoRef.current){
}