File size: 3,468 Bytes
aef1d09
001ebc6
 
 
 
 
 
 
8f521b9
001ebc6
aef1d09
001ebc6
c8228aa
aef1d09
001ebc6
 
 
 
 
 
 
 
 
 
 
 
2938d1f
001ebc6
aef1d09
 
2938d1f
aef1d09
001ebc6
 
 
aef1d09
 
001ebc6
aef1d09
001ebc6
 
 
 
547ab93
c66ec38
 
001ebc6
 
 
 
6d97ae5
001ebc6
 
 
 
 
 
 
 
 
aef1d09
001ebc6
 
 
c66ec38
 
 
001ebc6
0e614d5
8f521b9
 
 
 
 
 
c343a71
9237940
9e3b685
 
8f521b9
9237940
8f521b9
 
9e3b685
8f521b9
 
 
9237940
 
 
 
0e614d5
6d97ae5
dee1a4f
aef1d09
6d97ae5
 
001ebc6
 
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
90
91
92
93
94
95
96
97
98
99
####### Section 1 ###################
from PIL import Image
import numpy as np
import cv2
import requests
import face_recognition
import os
import streamlit as st
from urllib import request

####### Section 2 ###################
p1 = "sarwan.jpg"
p2 = "rattantata.png"
p3 = "Ravinder.jpg"

st.title("Face Recognition ")
Images     = []
classnames = []

# read images and train the face_recognition package
img1 = cv2.imread(p1)
Images.append(img1)
classnames.append("Sarwan")

img2 = cv2.imread(p2)
Images.append(img2)
classnames.append("RattanTata")

img3 = cv2.imread(p3)
Images.append(img3)
classnames.append("RavinderKaur")

# Load images for face recognition
encodeListknown = [face_recognition.face_encodings(img)[0] for img in Images]


####### Section 3 ################### 
# Take picture using the camera 
img_file_buffer = st.camera_input("Take Your picture")

# recognise the face in the uploaded image 
if img_file_buffer is not None:
    test_image = Image.open(img_file_buffer)
    image  = np.asarray(test_image)
    image = image.copy()
    
    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)
    faceMatchedflag = 0
    # run looop to find match in encodeListknown  list
    for encodeFace, faceLoc in zip(encodesCurFrame, facesCurFrame):
        # Assuming that encodeListknown is defined and populated in your code
        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)
            # show the name on image to user 
            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)

            ########## update website 
            # # using Get Method 
            # url  = "https://fc11.glitch.me/submit?email=pm&message=faceReco&name="
            # url = url + name
            # st.write(url)
            # res = urllib.request.urlopen(url)
            # response = requests.post(url )

            # # using post method
            url = "https://aimljul24f.glitch.me/save"
            # url1 = "/save"
            data = {'rollno': '99','name': name, 'email': '[email protected]','pwd': '**'  }
            # response = requests.post(url +url1 , data=data)

            # Post Method is invoked if data != None
            req =  request.Request(url , method="POST", data=data)
            
            # Response
            resp = request.urlopen(req)
            # if response.status_code == 200:
            #     st.success("Data updated on: " + "https://aimljul24f.glitch.me/")
            # else:
            #     st.warning("Data not updated")
            ########### end update website 
            faceMatchedflag = 1
     
    st.image(image , use_column_width=True, output_format="PNG")       
            
    if(faceMatchedflag == 0) : 
        st.warning("No faces detected in the image.")