File size: 3,934 Bytes
ee45314
5f5fb95
4cb6fe1
32780dd
 
e0bb112
 
 
5f5fb95
32780dd
4cb6fe1
c242c73
 
 
 
 
 
 
f88ac95
c242c73
 
 
 
 
f88ac95
c242c73
 
 
 
 
 
32780dd
4cb6fe1
1152c49
71d095a
1152c49
 
71d095a
1152c49
 
 
 
 
 
 
4cb6fe1
 
 
c242c73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5b98964
c242c73
ee45314
 
 
 
 
 
1152c49
 
71d095a
ee45314
 
c242c73
ee45314
c242c73
 
 
4cb6fe1
32780dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4cb6fe1
 
 
 
 
 
 
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

import streamlit as st
from PIL import Image
import face_recognition
import cv2
import numpy as np
import requests
import os

st.title("AIMLJan24 - Face Recognition")

# create list of encoding of all images in photos folder
# Load images for face recognition
Images = []   # List to store Images
classnames = []  # List to store classnames
directory = "photos"
myList = os.listdir(directory)

st.write("Photographs found in folder : ")
for cls in myList:
    if os.path.splitext(cls)[1] in [".jpg", ".jpeg"]:
        img_path = os.path.join(directory, cls)
        curImg = cv2.imread(img_path)
        Images.append(curImg)
        st.write(os.path.splitext(cls)[0])
        classnames.append(os.path.splitext(cls)[0])

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

# camera to take photo of user in question
file_name = st.camera_input("Take a picture")  #st.file_uploader("Upload image  ")

# Function to update Aadhaar data
def update_data(name):
    url = "https://attendanceviaface.000webhostapp.com"
    url1 = "/update.php"
    data = {'name': name, 'aadhaar': '998877'}
    response = requests.post(url + url1, data=data)
    
    if response.status_code == 200:
        st.success("Data updated on: " + url)
    else:
        st.warning("Data not updated")

if file_name is not None:
    col1, col2 = st.columns(2)

    test_image = Image.open(file_name)
    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)

    name = "Unknown"  # Default name for unknown faces
    match_found = False  # Flag to track if a match is found

    # Checking if faces are detected
    if len(encodesCurFrame) > 0:
        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()
                match_found = True  # Set the flag to True
                
            y1, x2, y2, x1 = faceLoc
            y1, x2, y2, x1 = (y1 * 4), (x2 * 4), (y2 * 4) ,(x1 * 4)
            
            # Make a copy of the image array before drawing on it
            image_copy = image.copy()
            
            cv2.rectangle(image_copy, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.rectangle(image_copy, (x1, y2 - 35), (x2, y2), (0, 255, 0), cv2.FILLED)
            cv2.putText(image_copy, name, (x1 + 6, y2 - 6), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 2)

            # update the database
            update_data(name)
            
        st.image(image_copy, use_column_width=True, output_format="PNG")
    else:
        st.warning("No faces detected in the image. Face recognition failed.")

    # image = Image.open(file_name)
    # col1.image(image, use_column_width=True)

# pipeline = pipeline(task="image-classification", model="julien-c/hotdog-not-hotdog")

# st.title("AIMLJan24 First App on Hugging face - Hot Dog? Or Not?")

# file_name = st.file_uploader("Upload the test image to find is this hot dog ! ")

# if file_name is not None:
#     col1, col2 = st.columns(2)

#     image = Image.open(file_name)
#     col1.image(image, use_column_width=True)
#     predictions = pipeline(image)

#     col2.header("Probabilities")
#     for p in predictions:
#         col2.subheader(f"{ p['label'] }: { round(p['score'] * 100, 1)}%")


# # my first app
# import streamlit as st

# x = st.slider('Select a value')
# st.write(x, 'squared is', x * x)