|
from keras.models import load_model |
|
from PIL import Image |
|
import numpy as np |
|
import cv2 |
|
import requests |
|
|
|
import face_recognition |
|
import os |
|
from datetime import datetime |
|
|
|
|
|
from matplotlib import pyplot as plt |
|
import pylab |
|
pylab.rcParams['figure.figsize'] = (10.0, 8.0) |
|
|
|
import io |
|
import streamlit as st |
|
bytes_data=None |
|
|
|
Images = [] |
|
classnames = [] |
|
myList = os.listdir() |
|
|
|
for cls in myList: |
|
if os.path.splitext(cls)[1] == ".jpg" : |
|
curImg = cv2.imread(f'{cls}') |
|
Images.append(curImg) |
|
classnames.append(os.path.splitext(cls)[0]) |
|
st.write(classnames) |
|
|
|
|
|
def findEncodings(Images): |
|
encodeList = [] |
|
for img in Images: |
|
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) |
|
encode = face_recognition.face_encodings(img)[0] |
|
encodeList.append(encode) |
|
return encodeList |
|
|
|
|
|
encodeListknown = findEncodings(Images) |
|
st.write('Encoding Complete') |
|
|
|
img_file_buffer=st.camera_input("Take a picture") |
|
if img_file_buffer is not None: |
|
|
|
test_image = Image.open(img_file_buffer) |
|
st.image(test_image, use_column_width=True) |
|
|
|
image = np.asarray(test_image) |
|
|
|
|
|
imgS = cv2.resize(image,(0,0),None,0.25,0.25) |
|
imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB) |
|
facesCurFrame = face_recognition.face_locations(imgS) |
|
encodesCurFrame = face_recognition.face_encodings(imgS,facesCurFrame) |
|
|
|
for encodeFace,faceLoc in zip(encodesCurFrame,facesCurFrame): |
|
matches = face_recognition.compare_faces(encodeListknown,encodeFace) |
|
faceDis = face_recognition.face_distance(encodeListknown,encodeFace) |
|
|
|
matchIndex = np.argmin(faceDis) |
|
|
|
if matches[matchIndex]: |
|
name = classnames[matchIndex].upper() |
|
st.write(name) |
|
y1, x2, y2, x1 = faceLoc |
|
y1, x2, y2, x1 = y1*4,x2*4,y2*4,x1*4 |
|
cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2) |
|
cv2.rectangle(image,(x1,y2-35),(x2,y2),(0,255,0),cv2.FILLED) |
|
cv2.putText(image,name,(x1+6,y2-6),cv2.FONT_HERSHEY_COMPLEX,1,(255, 255, 255),2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
url = "https://aimljul23f.glitch.me/" |
|
url1 = "fsave?nm=" + name |
|
|
|
response = requests.post(url+url1) |
|
|
|
if response.status_code == 200 : |
|
st.write(" data updated on : " + url) |
|
else : st.write("data not updated ") |
|
|
|
|
|
st.image(image) |
|
if bytes_data is None: |
|
st.stop() |