SWDesk
[Python] 사진에서 사람의 눈과 코, 입 등 특징점을 추출하는 코드
inhae
2023. 3. 5. 09:00
import cv2
import dlib
# 이미지 파일 경로
image_file = "test.jpg"
# 얼굴 탐지기
detector = dlib.get_frontal_face_detector()
# 얼굴 특징점 예측기
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
# 이미지 읽기
image = cv2.imread(image_file)
# 얼굴 탐지
faces = detector(image)
# 각 얼굴에 대해 특징점 예측
for face in faces:
landmarks = predictor(image, face)
# 눈, 코, 입 등의 위치 추출
left_eye = (landmarks.part(36).x, landmarks.part(36).y)
right_eye = (landmarks.part(45).x, landmarks.part(45).y)
nose = (landmarks.part(30).x, landmarks.part(30).y)
mouth_left = (landmarks.part(48).x, landmarks.part(48).y)
mouth_right = (landmarks.part(54).x, landmarks.part(54).y)
# 추출된 위치에 원 그리기
cv2.circle(image, left_eye, 3, (0, 255, 0), -1)
cv2.circle(image, right_eye, 3, (0, 255, 0), -1)
cv2.circle(image, nose, 3, (0, 255, 0), -1)
cv2.circle(image, mouth_left, 3, (0, 255, 0), -1)
cv2.circle(image, mouth_right, 3, (0, 255, 0), -1)
# 이미지 출력
cv2.imshow("Output", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
[설명 ]
위 코드에서 image_file 변수에 이미지 파일 경로를 지정하고, shape_predictor_68_face_landmarks.dat 파일은 dlib 라이브러리에서 제공하는 얼굴 특징점 예측 모델입니다. 이 파일은 다음 링크에서 다운로드 받을 수 있습니다: http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
위 코드를 실행하면 이미지에서 각 얼굴의 눈, 코, 입 등의 위치를 원으로 표시한 이미지가 출력됩니다. 이미지 창에서 아무 키나 누르면 종료됩니다.
반응형