0% found this document useful (0 votes)
45 views3 pages

468 Face Landmarks

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views3 pages

468 Face Landmarks

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

468 Face Landmarks

Code Files
468 Face Landmarks Code Files

IN PROGRESS

FaceMeshBasics.py
import cv2
import mediapipe as mp
import time

cap = cv2.VideoCapture("Videos/1.mp4")
pTime = 0

mpDraw = mp.solutions.drawing_utils
mpFaceMesh = mp.solutions.face_mesh
faceMesh = mpFaceMesh.FaceMesh(max_num_faces=2)
drawSpec = mpDraw.DrawingSpec(thickness=1, circle_radius=2)

while True:
success, img = cap.read()
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = faceMesh.process(imgRGB)
if results.multi_face_landmarks:
for faceLms in results.multi_face_landmarks:
mpDraw.draw_landmarks(img, faceLms,
mpFaceMesh.FACE_CONNECTIONS,
drawSpec,drawSpec)
for id,lm in enumerate(faceLms.landmark):
#print(lm)
ih, iw, ic = img.shape
x,y = int(lm.x*iw), int(lm.y*ih)
print(id,x,y)

cTime = time.time()
fps = 1 / (cTime - pTime)
pTime = cTime
cv2.putText(img, f'FPS: {int(fps)}', (20, 70),
cv2.FONT_HERSHEY_PLAIN,
3, (255, 0, 0), 3)
cv2.imshow("Image", img)
cv2.waitKey(1)

FaceMeshModule.py

import cv2
import mediapipe as mp
import time
class FaceMeshDetector():

def __init__(self, staticMode=False, maxFaces=2,


minDetectionCon=0.5, minTrackCon=0.5):

self.staticMode = staticMode
self.maxFaces = maxFaces
self.minDetectionCon = minDetectionCon
self.minTrackCon = minTrackCon

self.mpDraw = mp.solutions.drawing_utils
self.mpFaceMesh = mp.solutions.face_mesh
self.faceMesh =
self.mpFaceMesh.FaceMesh(self.staticMode, self.maxFaces,

self.minDetectionCon, self.minTrackCon)
self.drawSpec = self.mpDraw.DrawingSpec(thickness=1,
circle_radius=2)

def findFaceMesh(self, img, draw=True):


self.imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
self.results = self.faceMesh.process(self.imgRGB)
faces = []
if self.results.multi_face_landmarks:
for faceLms in self.results.multi_face_landmarks:
if draw:
self.mpDraw.draw_landmarks(img, faceLms,
self.mpFaceMesh.FACE_CONNECTIONS,
self.drawSpec,
self.drawSpec)
face = []
for id,lm in enumerate(faceLms.landmark):
#print(lm)
ih, iw, ic = img.shape
x,y = int(lm.x*iw), int(lm.y*ih)
#cv2.putText(img, str(id), (x, y),
cv2.FONT_HERSHEY_PLAIN,
# 0.7, (0, 255, 0), 1)

#print(id,x,y)
face.append([x,y])
faces.append(face)
return img, faces

def main():
cap = cv2.VideoCapture("Videos/1.mp4")
pTime = 0
detector = FaceMeshDetector(maxFaces=2)
while True:
success, img = cap.read()
img, faces = detector.findFaceMesh(img)
if len(faces)!= 0:
print(faces[0])
cTime = time.time()
fps = 1 / (cTime - pTime)
pTime = cTime
cv2.putText(img, f'FPS: {int(fps)}', (20, 70),
cv2.FONT_HERSHEY_PLAIN,
3, (0, 255, 0), 3)
cv2.imshow("Image", img)
cv2.waitKey(1)

if __name__ == "__main__":
main()

You might also like