반응형
Dlib는 C++로 작성된 크로스 플랫폼 머신러닝 SW 라이브러리로서 파이썬에서도 사용이 가능합니다.
대표적인 기능으로 사람의 얼굴에 landmark를 포인팅합니다. 이번 예제 코드를 통해 이미지 속 인물들의 얼굴에 landmark를 포인팅 하도록 하겠습니다.
소스코드
import numpy as np
import dlib
import cv2
RIGHT_EYE = list(range(36, 42))
LEFT_EYE = list(range(42, 48))
MOUTH = list(range(48, 68))
NOSE = list(range(27, 36))
EYEBROWS = list(range(17, 27))
JAWLINE = list(range(1, 17))
ALL = list(range(0, 68))
EYES = list(range(36, 48))
#-- 데이터 파일과 이미지 파일 경로
predictor_file = './shape_predictor_68_face_landmarks.dat' #-- 자신의 개발 환경에 맞게 변경할 것
image_file = './img.jpg' #-- 자신의 개발 환경에 맞게 변경할 것
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(predictor_file)
image = cv2.imread(image_file)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
rects = detector(gray, 1)
print("Number of faces detected: {}".format(len(rects)))
for (i, rect) in enumerate(rects):
points = np.matrix([[p.x, p.y] for p in predictor(gray, rect).parts()])
show_parts = points[ALL]
for (i, point) in enumerate(show_parts):
x = point[0,0]
y = point[0,1]
cv2.circle(image, (x, y), 1, (0, 255, 255), -1)
cv2.putText(image, "{}".format(i + 1), (x, y - 2),
cv2.FONT_HERSHEY_SIMPLEX, 0.3, (0, 255, 0), 1)
cv2.imshow("Face Landmark", image)
cv2.waitKey(0)
테스트
일반적인 인물의 사진을 이용하여 코드 적용 전, 후 입니다.
어느 정도의 인식 성능을 확인해 볼 수 있습니다.
또 다른 이미지 파일을 이용하여 적용한 결과
다음으로 영상에 적용하여 테스트 결과를 확인해볼 예정입니다.
반응형
'Python > OpenCV' 카테고리의 다른 글
[OpenCV] cvlib 이미지 인물 얼굴 모자이크 (0) | 2022.02.07 |
---|---|
[OpenCV] putText 파라미터 (0) | 2022.01.03 |
[OpenCV] 광 흐름 탐지 - optical flow detection (0) | 2022.01.03 |
[OpenCV] dlib 영상&캠 얼굴 랜드마크 (face landmark) (0) | 2022.01.03 |
[OpenCV] 영상 얼굴인식: 얼굴&눈 (Haar-cascade) (0) | 2021.12.29 |
댓글