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