ориентир лица во всей папке, используя dlib - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть этот код, который помечает выделенные области (точки) в человеческом лице, используя dlib. Я написал код для работы только с одним изображением, но у меня в папке много изображений, и я хочу, чтобы код делал то же самое для всех лиц в моей папке "images" и печатал или сохранял все координаты. Это мой код ниже. Пожалуйста, помогите мне отредактировать, чтобы работать для всех изображений в моей папке "images".

import cv2
import dlib
import glob
import numpy as np
import pandas as pd


# set up the 68 point facial landmark detector
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")


img = cv2.imread("images/image_2_jpg.jpg", 1)

img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
# detect faces in the image
faces_in_image = detector(img_gray, 1)

# loop through each face in image and print rectangle
for face in faces_in_image:
    x, y = face.left(), face.top()
    x1, y1 = face.right(), face.bottom()
    cv2.rectangle(img, (x, y), (x1, y1), (0, 255, 0), 1)

#generating custom landmarks
    landmarks = predictor(img_gray, face)

a = [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 27, 30, 31, 32, 33, 34, 35, 48, 54, 50, 51, 52, 57]


for n in a:
    x = landmarks.part(n).x
    y = landmarks.part(n).y
    cv2.circle(img, (x, y), 2, (255, 0, 0), -1)

    # print out the coordinates
    print(x, y)


# show the output image with the face detections + facial landmarks
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()


# output 

face-1
x   y
23  33
33  43
87  56

face-2
x   y
23  33
33  43
87  56

etc.
...