Mehulgarg commited on
Commit
2ebfc63
1 Parent(s): 21c32d7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -64
app.py CHANGED
@@ -1,34 +1,25 @@
1
- from keras.models import load_model
2
- from PIL import Image
3
  import numpy as np
4
- import cv2
5
- import requests
6
-
7
  import face_recognition
8
- import os
9
- from datetime import datetime
10
-
11
- #the following are to do with this interactive notebook code
12
- from matplotlib import pyplot as plt # this lets you draw inline pictures in the notebooks
13
- import pylab # this allows you to control figure size
14
- pylab.rcParams['figure.figsize'] = (10.0, 8.0) # this controls figure size in the notebook
15
-
16
- import io
17
  import streamlit as st
18
- bytes_data=None
 
 
 
19
 
 
20
  Images = []
21
  classnames = []
22
  myList = os.listdir()
23
- #st.write(myList)
24
  for cls in myList:
25
- if os.path.splitext(cls)[1] == ".jpg" :
26
  curImg = cv2.imread(f'{cls}')
27
  Images.append(curImg)
28
  classnames.append(os.path.splitext(cls)[0])
29
- st.write(classnames)
30
-
31
 
 
32
  def findEncodings(Images):
33
  encodeList = []
34
  for img in Images:
@@ -37,58 +28,50 @@ def findEncodings(Images):
37
  encodeList.append(encode)
38
  return encodeList
39
 
40
-
41
  encodeListknown = findEncodings(Images)
42
  st.write('Encoding Complete')
43
 
44
- img_file_buffer=st.camera_input("Take a picture")
 
 
 
45
  if img_file_buffer is not None:
46
-
47
- test_image = Image.open(img_file_buffer)
48
- st.image(test_image, use_column_width=True)
49
-
50
- image = np.asarray(test_image)
51
-
52
- #########################
53
- imgS = cv2.resize(image,(0,0),None,0.25,0.25)
54
- imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB)
55
- facesCurFrame = face_recognition.face_locations(imgS)
56
- encodesCurFrame = face_recognition.face_encodings(imgS,facesCurFrame)
57
 
58
- for encodeFace,faceLoc in zip(encodesCurFrame,facesCurFrame):
59
- matches = face_recognition.compare_faces(encodeListknown,encodeFace)
60
- faceDis = face_recognition.face_distance(encodeListknown,encodeFace)
61
- #print(faceDis)
62
- matchIndex = np.argmin(faceDis)
63
 
64
- if matches[matchIndex]:
65
- name = classnames[matchIndex].upper()
66
- st.write(name)
67
- y1, x2, y2, x1 = faceLoc
68
- y1, x2, y2, x1 = y1*4,x2*4,y2*4,x1*4
69
- cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2)
70
- cv2.rectangle(image,(x1,y2-35),(x2,y2),(0,255,0),cv2.FILLED)
71
- cv2.putText(image,name,(x1+6,y2-6),cv2.FONT_HERSHEY_COMPLEX,1,(255, 255, 255),2)
72
 
73
- ##############
74
- url = "https://rgiattendance.000webhostapp.com"
75
- url1 = "/update.php"
76
- data1 = {'name':name }
77
- response = requests.post(url+url1, data=data1)
 
 
 
78
 
79
- # # https://aimljul23f.glitch.me/fsave?nm=testname
80
- # url = "https://aimljul23f.glitch.me/"
81
- # url1 = "fsave?nm=" + name
82
- # # data1 = {'name':name }
83
- # response = requests.post(url+url1)
84
-
85
- if response.status_code == 200 :
86
- st.write(" data updated on : " + url)
87
- else : st.write("data NOT updated " + url+url1)
88
-
89
- ##############################
90
- st.image(image)
91
- if bytes_data is None:
92
- st.stop()
93
 
 
 
 
 
94
 
 
 
1
+ import os
2
+ import cv2
3
  import numpy as np
4
+ from PIL import Image
 
 
5
  import face_recognition
 
 
 
 
 
 
 
 
 
6
  import streamlit as st
7
+ import requests
8
+
9
+ # Set up Streamlit
10
+ st.title("Face Recognition App")
11
 
12
+ # Load images from the current directory
13
  Images = []
14
  classnames = []
15
  myList = os.listdir()
 
16
  for cls in myList:
17
+ if os.path.splitext(cls)[1] == ".jpg":
18
  curImg = cv2.imread(f'{cls}')
19
  Images.append(curImg)
20
  classnames.append(os.path.splitext(cls)[0])
 
 
21
 
22
+ # Function to find face encodings
23
  def findEncodings(Images):
24
  encodeList = []
25
  for img in Images:
 
28
  encodeList.append(encode)
29
  return encodeList
30
 
 
31
  encodeListknown = findEncodings(Images)
32
  st.write('Encoding Complete')
33
 
34
+ # Take a picture using Streamlit camera input
35
+ img_file_buffer = st.camera_input("Take a picture")
36
+
37
+ # Check if an image was taken
38
  if img_file_buffer is not None:
39
+ test_image = Image.open(img_file_buffer)
40
+ st.image(test_image, use_column_width=True)
41
+
42
+ # Convert the image to numpy array
43
+ image = np.asarray(test_image)
44
+
45
+ # Resize image
46
+ imgS = cv2.resize(image, (0, 0), None, 0.25, 0.25)
47
+ imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB)
 
 
48
 
49
+ # Find face locations and encodings
50
+ facesCurFrame = face_recognition.face_locations(imgS)
51
+ encodesCurFrame = face_recognition.face_encodings(imgS, facesCurFrame)
 
 
52
 
53
+ for encodeFace, faceLoc in zip(encodesCurFrame, facesCurFrame):
54
+ matches = face_recognition.compare_faces(encodeListknown, encodeFace)
55
+ faceDis = face_recognition.face_distance(encodeListknown, encodeFace)
56
+ matchIndex = np.argmin(faceDis)
 
 
 
 
57
 
58
+ if matches[matchIndex]:
59
+ name = classnames[matchIndex].upper()
60
+ st.write(name)
61
+ y1, x2, y2, x1 = faceLoc
62
+ y1, x2, y2, x1 = y1 * 4, x2 * 4, y2 * 4, x1 * 4
63
+ cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
64
+ cv2.rectangle(image, (x1, y2 - 35), (x2, y2), (0, 255, 0), cv2.FILLED)
65
+ cv2.putText(image, name, (x1 + 6, y2 - 6), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 2)
66
 
67
+ # Update data using requests
68
+ url = "https://rgiattendance.000webhostapp.com/update.php"
69
+ data1 = {'name': name}
70
+ response = requests.post(url, data=data1)
 
 
 
 
 
 
 
 
 
 
71
 
72
+ if response.status_code == 200:
73
+ st.write("Data updated on: " + url)
74
+ else:
75
+ st.write("Data NOT updated " + url)
76
 
77
+ st.image(image)