如何解决使用face-api.js进行实时网络摄像头人脸识别,我的代码在哪里出错?它什么也没检测到
这是我的script.js:
$(document).ready(function(){
start()
})
const mtcnnParams = {
// number of scaled versions of the input image passed through the CNN
// of the first stage,lower numbers will result in lower inference time,// but will also be less accurate
maxNumScales: 10,// scale factor used to calculate the scale steps of the image
// pyramid used in stage 1
scaleFactor: 0.709,// the score threshold values used to filter the bounding
// boxes of stage 1,2 and 3
scoreThresholds: [0.6,0.7,0.7],// mininum face size to expect,the higher the faster processing will be,// but smaller faces won't be detected
minFaceSize: 20
}
async function start() {
// load the models
await faceapi.loadMtcnnModel('/models')
await faceapi.loadFaceRecognitionModel('/models')
const videoEl = document.getElementById('inputVideo')
navigator.getUserMedia(
{ video: {} },stream => videoEl.srcObject = stream,err => console.error(err)
)
const mtcnnResults = await faceapi.mtcnn(document.getElementById('inputVideo'),mtcnnForwardParams)
// faceapi.drawDetection('overlay',mtcnnResults.map(res => res.faceDetection),{ withScore: false })
// faceapi.drawLandmarks('overlay',mtcnnResults.map(res => res.faceLandmarks),{ lineWidth: 4,color: 'red' })
const options = new faceapi.MtcnnOptions(mtcnnParams)
const input = document.getElementById('inputVideo')
const fullFaceDescriptions = await faceapi.detectAllFaces(input,options).withFaceLandmarks().withFaceDescriptors()
const labels = ['arif']
const labeledFaceDescriptors = await Promise.all(
labels.map(async label=>{
const img = await faceapi.fetchImage(
'https://github.com/ahmedarifhasan/adasd/blob/master/Test.jpg'
)
const fullFaceDescription = await faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors()
if (!fullFaceDescription) {
throw new Error(`no faces detected for ${label}`)
}
return new faceapi.LabeledFaceDescriptors(label,fullFaceDescription)
})
)
const maxDescriptorDistance = 0.6
const faceMatcher = new faceapi.FaceMatcher(labeledFaceDescriptors,maxDescriptorDistance)
const results = fullFaceDescription.map(fd => faceMatcher.findBestMatch(fd.descriptor))
results.forEach((bestMatch,i) => {
const box = fullFaceDescriptions[i].detection.box
const text = bestMatch.toString()
const drawBox = new faceapi.draw.DrawBox(box,{ label: text })
drawBox.draw(canvas)
})
}
async function onPlay(videoEl){
start()
setTimeout(()=>onPlay(videoEl))
}
const mtcnnForwardParams = {
// number of scaled versions of the input image passed through the CNN
// of the first stage,// but smaller faces won't be detected
minFaceSize: 20
}
这是我的index.html:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
<script defer src="face-api.min.js"></script>
<script defer src="script.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style>
body{
margin:0;
padding:0;
widows: 100vw;
height: 100vh;
display : flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
canvas{
position: absolute;
}
</style>
</head>
<body>
<div style="position: relative;" class="margin">
<video onplay="onPlay(this)" id="inputVideo" autoplay muted></video>
<canvas id="overlay" />
</div>
<div>
<p>Hello</p>
</div>
</body>
</html>
我对此并不陌生,必须识别网络摄像头中该人的面孔。非常感谢您的帮助。
另外,在我看来,face-api.js比其他软件包要强一些,因此在回答时请保持礼貌。 我已将图片上传到Github,并使用该链接进行识别。
的操作版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。