Существует сценарий python для распознавания лиц, который я хочу изменить и запустить в моем приложении laravel, чтобы предоставить пользователям доступ к странице с помощью распознавания лиц. Но я понятия не имею, как это сделать.
Вот оригинал html (не из моего приложения): вы делаете снимок и сравниваете изображение с изображениями в папке
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css">
<title>Login</title>
</head>
<body onload="init()">
<nav class="navbar text-white navbar-dark bg-dark">
<a href="#" class="navbar-brand">
Login
</a>
</nav>
<p>
</p>
<div class="container text-center bordered" style="width:280px">
<form action="login.py" method="post" enctype="multipart/form-data">
<video onclick="snapshot(this);" width=250 height=250 id="video" controls autoplay></video>
<br>
<input type="email" placeholder="Email" name="email" class="form-control form-control-sm text-left">
<br>
<input type="text" accept="image/png" hidden name="current_image" id="current_image">
<button onclick="login()" class="btn-dark" value="login">Login </button>
<br>
<br>
</form>
</div>
<canvas id="myCanvas" width="400" height="350" hidden></canvas>
</body>
<script>
//--------------------
// GET USER MEDIA CODE
//--------------------
navigator.mediaDevices.getUserMedia = ( navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
var video;
var webcamStream;
if (navigator.getUserMedia) {
navigator.getUserMedia (
// constraints
{
video: true,
audio: false
},
// successCallback
function(localMediaStream) {
video = document.querySelector('video');
video.srcObject = localMediaStream;
webcamStream = localMediaStream;
},
// errorCallback
function(err) {
console.log("The following error occured: " + err);
}
);
} else {
console.log("getUserMedia not supported");
}
var canvas, ctx;
function init() {
// Get the canvas and obtain a context for
// drawing in it
mcanvas = document.getElementById("myCanvas");
ctx = mcanvas.getContext('2d');
}
function login() {
// Draws current image from the video element into the canvas
ctx.drawImage(video,0,0,mcanvas.width,mcanvas.height);
var dataURL = mcanvas.toDataURL('image/png');
document.getElementById("current_image").value=dataURL;
}
</script>
</html>
и python:
#!"C:\Users\aya-i\AppData\Local\Programs\Python\Python38\python.exe"
import cgi
from base64 import b64decode
import face_recognition
formData = cgi.FieldStorage()
face_match=0
image=formData.getvalue("current_image")
email=formData.getvalue("email")
data_uri = image
header, encoded = data_uri.split(",", 1)
data = b64decode(encoded)
with open("image.png", "wb") as f:
f.write(data)
got_image = face_recognition.load_image_file("image.png")
existing_image = face_recognition.load_image_file("students/"+email+".jpg")
got_image_facialfeatures = face_recognition.face_encodings(got_image)[0]
existing_image_facialfeatures = face_recognition.face_encodings(existing_image)[0]
results= face_recognition.compare_faces([existing_image_facialfeatures],got_image_facialfeatures)
if(results[0]):
face_match=1
else:
face_match=0
print("Content-Type: text/html")
print()
if(face_match==1):
print("<script>alert('welcome ",email," ')</script>")
else:
print("<script>alert('face not recognized')</script>")