Запустить python скрипт в laravel - PullRequest
1 голос
/ 20 июня 2020

Существует сценарий 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>")

1 Ответ

0 голосов
/ 20 июня 2020

Любые внешние команды, такие как unix команды терминала, python команда и ..., должны запускаться с функцией PHP s exec(). Эта функция запускает ваши команды и имеет возможность получить вывод вашей команды, вы должны сами обработать ошибку и успешный вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...