Popular Posts

Jul 8, 2020

Python OpenCV Project: Attendance

Create File and named it Attendance.csv
Create directory ImagesBasic and ImagesAttendance
Put original images to ImagesAttendance and in ImagesBasic put test images
Install Required packages. Stable version of Dlib package version is 19.18
To add packages go the settings->


Install c++








import cv2
import numpy as np
import face_recognition
import os
from datetime import datetime

path =
'ImagesAttendance'
images = []
classNames = []
myList = os.listdir(path)
print(myList)
for c1 in myList:
    curImg = cv2.imread(
f'{path}/{c1}')
    images.append(curImg)
    classNames.append(os.path.splitext(c1)[
0])
print(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

def markAttendance(name):
   
with open('Attendance.csv','r+') as f:
        myDataList = f.readlines()
        nameList = []
       
for line in myDataList:
            entry = line.split(
',')
            nameList.append(entry[
0])
       
if name not in nameList:
            now = datetime.now()
            dtString = now.strftime(
'%H:%M:%S')
            f.writelines(
f'\n{name}, {dtString}')
           
# print(myDataList)

encodeListKnown = findEncodings(images)
#print(len(encodeListKnown))
print('Encoding Complete')

cap = cv2.VideoCapture(
0)
while True:
    success
, img = cap.read()
    imgS = cv2.resize(img
, (0,0), None, 0.25, 0.25)
    imgS = cv2.cvtColor(imgS
, cv2.COLOR_BGR2RGB)

    facesCurFrame = face_recognition.face_locations(imgS)
    encodesCurName = face_recognition.face_encodings(imgS
, facesCurFrame)

   
for encodeFace, faceLoc in zip(encodesCurName, 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].upper()
           
print(name)
            y1
, x2, y2, x1 = faceLoc
            y1
, x2, y2, x1 =  y1*4, x2*4, y2*4, x1*4
           
cv2.rectangle(img, (x1, y1), (x2, y2),(0,255,0),2)
            cv2.rectangle(img
, (x1, y2-35), (x2, y2), (0, 255, 0), cv2.FILLED)
            cv2.putText(img
, name,(x1+6, y2-6), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 2)
            markAttendance(name)


    cv2.imshow(
'WebCam', img)
    cv2.waitKey(
1)

No comments:

Post a Comment