import numpy as np import cv2 import requests import face_recognition import os from datetime import datetime import streamlit as st 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]) 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') cap = cv2.VideoCapture(0) # Use 0 for the default camera while True: ret, frame = cap.read() frame = cv2.flip(frame, 1) # Flip horizontally st.image(frame) if ret: imgS = cv2.resize(frame, (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] st.write(name) y1, x2, y2, x1 = faceLoc y1, x2, y2, x1 = y1 * 4, x2 * 4, y2 * 4, x1 * 4 cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.rectangle(frame, (x1, y2 - 35), (x2, y2), (0, 255, 0), cv2.FILLED) cv2.putText(frame, name, (x1 + 6, y2 - 6), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 2) # Sending data to a URL url = "https://kiwi-whispering-plier.glitch.me/update" data1 = {'name': name} response = requests.post(url, data=data1) 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()