1import random 2import numpy as np 3import cv2 as cv 4 5frame1 = cv.imread(cv.samples.findFile('lena.jpg')) 6if frame1 is None: 7 print("image not found") 8 exit() 9frame = np.vstack((frame1,frame1)) 10facemark = cv.face.createFacemarkLBF() 11try: 12 facemark.loadModel(cv.samples.findFile('lbfmodel.yaml')) 13except cv.error: 14 print("Model not found\nlbfmodel.yaml can be download at") 15 print("https://raw.githubusercontent.com/kurnianggoro/GSOC2017/master/data/lbfmodel.yaml") 16cascade = cv.CascadeClassifier(cv.samples.findFile('lbpcascade_frontalface_improved.xml')) 17if cascade.empty() : 18 print("cascade not found") 19 exit() 20faces = cascade.detectMultiScale(frame, 1.05, 3, cv.CASCADE_SCALE_IMAGE, (30, 30)) 21ok, landmarks = facemark.fit(frame, faces=faces) 22cv.imshow("Image", frame) 23for marks in landmarks: 24 couleur = (random.randint(0,255), 25 random.randint(0,255), 26 random.randint(0,255)) 27 cv.face.drawFacemarks(frame, marks, couleur) 28cv.imshow("Image Landmarks", frame) 29cv.waitKey() 30