File size: 2,863 Bytes
084650c
 
8662b29
 
 
084650c
8662b29
 
 
084650c
 
 
 
 
 
 
8662b29
084650c
8662b29
 
 
 
084650c
8662b29
084650c
8662b29
 
 
084650c
 
8662b29
 
 
 
 
 
 
 
 
d58f394
084650c
8662b29
 
084650c
 
 
 
 
 
 
8662b29
084650c
 
 
 
 
d58f394
084650c
 
 
 
 
d58f394
084650c
 
 
 
 
 
 
 
8662b29
084650c
 
58bcfd4
8fd7e01
 
 
 
 
084650c
 
f55c966
084650c
 
 
99994b6
66df1a4
084650c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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

#the following are to do with this interactive notebook code
from matplotlib import pyplot as plt # this lets you draw inline pictures in the notebooks
import pylab # this allows you to control figure size 
pylab.rcParams['figure.figsize'] = (10.0, 8.0) # this controls figure size in the notebook

import io
import streamlit as st
bytes_data=None

Images = []
classnames = []
myList = os.listdir()
#st.write(myList)
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)
         #print(faceDis)
         matchIndex = np.argmin(faceDis)

         if matches[matchIndex]:
             name = classnames[matchIndex]
             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://kiwi-whispering-plier.glitch.me/update" 
             
             data = {
                     'name': name,
             }

             response = requests.get(url, params=data)
             
             if response.status_code == 200 : 
                 st.write(" data updated on : https://kiwi-whispering-plier.glitch.me" )
             else : st.write("data not updated ")
                 
     ##############################
     st.image(image)
if bytes_data is None:
     st.stop()