Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
21-22J-056
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
0
Merge Requests
0
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
21-22J-056
21-22J-056
Commits
28faf24c
Commit
28faf24c
authored
Jan 12, 2022
by
Davis E.J.A iIT18107456
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
ea7b7ba3
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
161 additions
and
0 deletions
+161
-0
pregnentfaceanalysis.py
pregnentfaceanalysis.py
+161
-0
No files found.
pregnentfaceanalysis.py
0 → 100644
View file @
28faf24c
# import the necessary packages
from
scipy.spatial
import
distance
as
dist
from
imutils.video
import
FileVideoStream
from
imutils.video
import
VideoStream
from
imutils
import
face_utils
import
argparse
import
imutils
import
time
import
dlib
import
cv2
# Load the cascades
face_cascade
=
cv2
.
CascadeClassifier
(
'frontalface_cascade.xml'
)
eye_cascade
=
cv2
.
CascadeClassifier
(
'eyes_cascade.xml'
)
smile_cascade
=
cv2
.
CascadeClassifier
(
'Smile_cascade.xml'
)
# Defining a function that will do the detections
def
detect
(
gray
,
frame
):
faces
=
face_cascade
.
detectMultiScale
(
gray
,
1.3
,
5
)
for
(
x
,
y
,
w
,
h
)
in
faces
:
cv2
.
rectangle
(
frame
,
(
x
,
y
),
(
x
+
w
,
y
+
h
),
(
255
,
0
,
0
),
2
)
roi_gray
=
gray
[
y
:
y
+
h
,
x
:
x
+
w
]
roi_color
=
frame
[
y
:
y
+
h
,
x
:
x
+
w
]
eyes
=
eye_cascade
.
detectMultiScale
(
roi_gray
,
1.1
,
22
)
for
(
ex
,
ey
,
ew
,
eh
)
in
eyes
:
cv2
.
rectangle
(
roi_color
,
(
ex
,
ey
),
(
ex
+
ew
,
ey
+
eh
),
(
0
,
255
,
0
),
2
)
smiles
=
smile_cascade
.
detectMultiScale
(
roi_gray
,
1.7
,
19
)
for
(
sx
,
sy
,
sw
,
sh
)
in
smiles
:
cv2
.
rectangle
(
roi_color
,
(
sx
,
sy
),
(
sx
+
sw
,
sy
+
sh
),
(
0
,
0
,
255
),
5
)
return
frame
# Doing some Face Recognition with the webcam
video_capture
=
cv2
.
VideoCapture
(
0
)
while
True
:
_
,
frame
=
video_capture
.
read
()
gray
=
cv2
.
cvtColor
(
frame
,
cv2
.
COLOR_BGR2GRAY
)
canvas
=
detect
(
gray
,
frame
)
cv2
.
imshow
(
'Video'
,
canvas
)
if
cv2
.
waitKey
(
1
)
&
0xFF
==
ord
(
'q'
):
break
def
eye_aspect_ratio
(
eye
):
A
=
dist
.
euclidean
(
eye
[
1
],
eye
[
5
])
B
=
dist
.
euclidean
(
eye
[
2
],
eye
[
4
])
C
=
dist
.
euclidean
(
eye
[
0
],
eye
[
3
])
ear
=
(
A
+
B
)
/
(
2.0
*
C
)
return
ear
ap
=
argparse
.
ArgumentParser
()
ap
.
add_argument
(
"-p"
,
"--shape-predictor"
,
default
=
"shape_predictor_68_face_landmarks.dat"
,
help
=
"path to facial landmark predictor"
)
ap
.
add_argument
(
"-v"
,
"--video"
,
type
=
str
,
default
=
"camera"
,
help
=
"path to input video file"
)
ap
.
add_argument
(
"-t"
,
"--threshold"
,
type
=
float
,
default
=
0.27
,
help
=
"threshold to determine closed eyes"
)
ap
.
add_argument
(
"-f"
,
"--frames"
,
type
=
int
,
default
=
2
,
help
=
"the number of consecutive frames the eye must be below the threshold"
)
def
main
()
:
args
=
vars
(
ap
.
parse_args
())
EYE_AR_THRESH
=
args
[
'threshold'
]
EYE_AR_CONSEC_FRAMES
=
args
[
'frames'
]
COUNTER
=
0
TOTAL
=
0
print
(
"[INFO] loading cascade code loading"
)
detector
=
dlib
.
get_frontal_face_detector
()
predictor
=
dlib
.
shape_predictor
(
args
[
"shape_predictor"
])
(
lStart
,
lEnd
)
=
face_utils
.
FACIAL_LANDMARKS_IDXS
[
"left_eye"
]
(
rStart
,
rEnd
)
=
face_utils
.
FACIAL_LANDMARKS_IDXS
[
"right_eye"
]
if
args
[
'video'
]
==
"camera"
:
vs
=
VideoStream
(
src
=
0
)
.
start
()
fileStream
=
False
else
:
vs
=
FileVideoStream
(
args
[
"video"
])
.
start
()
fileStream
=
True
time
.
sleep
(
1.0
)
while
True
:
if
fileStream
and
not
vs
.
more
():
break
frame
=
vs
.
read
()
frame
=
imutils
.
resize
(
frame
,
width
=
450
)
gray
=
cv2
.
cvtColor
(
frame
,
cv2
.
COLOR_BGR2GRAY
)
rects
=
detector
(
gray
,
0
)
for
rect
in
rects
:
shape
=
predictor
(
gray
,
rect
)
shape
=
face_utils
.
shape_to_np
(
shape
)
leftEye
=
shape
[
lStart
:
lEnd
]
rightEye
=
shape
[
rStart
:
rEnd
]
leftEAR
=
eye_aspect_ratio
(
leftEye
)
rightEAR
=
eye_aspect_ratio
(
rightEye
)
ear
=
(
leftEAR
+
rightEAR
)
/
2.0
leftEyeHull
=
cv2
.
convexHull
(
leftEye
)
rightEyeHull
=
cv2
.
convexHull
(
rightEye
)
cv2
.
drawContours
(
frame
,
[
leftEyeHull
],
-
1
,
(
0
,
255
,
0
),
1
)
cv2
.
drawContours
(
frame
,
[
rightEyeHull
],
-
1
,
(
0
,
255
,
0
),
1
)
if
ear
<
EYE_AR_THRESH
:
COUNTER
+=
1
else
:
if
COUNTER
>=
EYE_AR_CONSEC_FRAMES
:
TOTAL
+=
1
COUNTER
=
0
#cv2.putText(frame, "pregnent eye : {}".format(TOTAL), (10, 30),
#cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
cv2
.
putText
(
frame
,
"prgnent eye skin beat: {}"
.
format
(
ear
),
(
30
,
30
),
cv2
.
FONT_HERSHEY_SIMPLEX
,
0.7
,
(
0
,
0
,
255
),
2
)
cv2
.
imshow
(
"Frame"
,
frame
)
key
=
cv2
.
waitKey
(
1
)
&
0xFF
if
key
==
ord
(
"q"
):
break
# do a bit of cleanup
cv2
.
destroyAllWindows
()
vs
.
stop
()
if
__name__
==
'__main__'
:
main
()
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