如何解决如何将照片与网络摄像头进行比较? FaceAPI.js
我正在尝试开发一个网络应用程序,通过网络摄像头检测人脸并将其与保存的图像进行比较。为此,我在浏览器中使用 FaceAPI.js
和 javascript
从这个YouTube video中汲取很多想法
我还是个新手,这份工作是为了学校作业。希望有人能救救我,非常感谢。
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Prueba A</title>
</head>
<style>
body {
margin: 0;
padding: 0;
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
canvas {
position: absolute;
}
</style>
<body>
<video id="video" width="720" height="568" autoplay muted></video>
<script defer src="script/face-api.min.js"></script>
<script defer src="script/script.js"></script>
</body>
</html>
JavaScript
const video = document.getElementById('video');
Promise.all([
faceapi.nets.tinyFaceDetector.loadFromUri("models/"),faceapi.nets.faceLandmark68Net.loadFromUri("models/"),faceapi.nets.faceRecognitionNet.loadFromUri("models/"),faceapi.nets.faceExpressionNet.loadFromUri("models/"),faceapi.nets.ssdMobilenetv1.loadFromUri('/models')
]).then(startVideo)
function startVideo() {
navigator.getUserMedia(
{video: {}},stream => video.srcObject = stream,err => console.error(err)
)
}
video.addEventListener('play',async () => {
const labeledFaceDescriptors = await loadLabeledImages()
const faceMatcher = new faceapi.FaceMatcher(labeledFaceDescriptors,0.6)
setInterval(async () => {
const displaySize = { width: video.width,height: video.height}
const detections = await faceapi.detectAllFaces(video,new faceapi.TinyFaceDetectorOptions()).withFaceLandmarks().withFaceExpressions()
const resizedDetections = faceapi.resizeResults(detections,displaySize)
const results = resizedDetections.map(d => faceMatcher.findBestMatch(d.descriptor))
},100)
})
function loadLabeledImages() {
const labels = ['Alan','Mich','John']
return Promise.all(
labels.map(async label => {
const descriptions = []
for (let i = 1; i <= 2; i++) {
const img = await faceapi.fetchImage(`labeled_images/${label}/${i}.jpg`)
const detections = await faceapi.detectSingleFace(img).withFaceLandmarks().withFaceDescriptor()
descriptions.push(detections.descriptor)
}
return new faceapi.LabeledFaceDescriptors(label,descriptions)
})
)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。