Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2022-027
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2022-027
2022-027
Commits
f6f50c02
Commit
f6f50c02
authored
Nov 14, 2022
by
Gunasena D K B
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
59b94e68
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
96 additions
and
0 deletions
+96
-0
FaceIdentification/Project.py
FaceIdentification/Project.py
+96
-0
No files found.
FaceIdentification/Project.py
0 → 100644
View file @
f6f50c02
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
cls
in
myList
:
curImg
=
cv2
.
imread
(
f
'{path}/{cls}'
)
images
.
append
(
curImg
)
classNames
.
append
(
os
.
path
.
splitext
(
cls
)[
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
unknown_image_encoded
(
images
):
"""
encode a face given the file name
"""
face
=
face_recognition
.
load_image_file
(
"faces/"
+
images
)
encoding
=
face_recognition
.
face_encodings
(
face
)[
0
]
return
encoding
# def markAttendance(name):
# with open('Attendance.csv', 'r+') as f:
# myDataList = f.readlines()
# print(myDataList)
# 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}')
encodeListKnown
=
findEncodings
(
images
)
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
)
encodesCurFrame
=
face_recognition
.
face_encodings
(
imgS
,
facesCurFrame
)
face_locations
=
face_recognition
.
face_locations
(
imgS
)
unknown_face_encodings
=
face_recognition
.
face_encodings
(
imgS
,
face_locations
)
for
face_encoding
in
unknown_face_encodings
:
# See if the face is a match for the known face(s)
matches
=
face_recognition
.
compare_faces
(
encodeListKnown
,
face_encoding
)
name
=
"Unknown"
# use the known face with the smallest distance to the new face
face_distances
=
face_recognition
.
face_distance
(
encodeListKnown
,
face_encoding
)
best_match_index
=
np
.
argmin
(
face_distances
)
if
matches
[
best_match_index
]:
name
=
encodeListKnown
[
best_match_index
]
for
encodeFace
,
faceLoc
in
zip
(
encodesCurFrame
,
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 newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment