You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.0 KiB
29 lines
1.0 KiB
import random |
|
import numpy as np |
|
import cv2 as cv |
|
|
|
frame1 = cv.imread(cv.samples.findFile('lena.jpg')) |
|
if frame1 is None: |
|
print("image not found") |
|
exit() |
|
frame = np.vstack((frame1,frame1)) |
|
facemark = cv.face.createFacemarkLBF() |
|
try: |
|
facemark.loadModel(cv.samples.findFile('lbfmodel.yaml')) |
|
except cv.error: |
|
print("Model not found\nlbfmodel.yaml can be download at") |
|
print("https://raw.githubusercontent.com/kurnianggoro/GSOC2017/master/data/lbfmodel.yaml") |
|
cascade = cv.CascadeClassifier(cv.samples.findFile('lbpcascade_frontalface_improved.xml')) |
|
if cascade.empty() : |
|
print("cascade not found") |
|
exit() |
|
faces = cascade.detectMultiScale(frame, 1.05, 3, cv.CASCADE_SCALE_IMAGE, (30, 30)) |
|
ok, landmarks = facemark.fit(frame, faces=faces) |
|
cv.imshow("Image", frame) |
|
for marks in landmarks: |
|
couleur = (random.randint(0,255), |
|
random.randint(0,255), |
|
random.randint(0,255)) |
|
cv.face.drawFacemarks(frame, marks, couleur) |
|
cv.imshow("Image Landmarks", frame) |
|
cv.waitKey()
|
|
|