ursobad
ursobad
ursobad
전체 방문자
오늘
어제
  • 분류 전체보기 (116)
    • Emotion (35)
      • 파이썬 (10)
      • 문제 (10)
      • 인공지능 기초 (15)
    • Best of the Best (3)
    • Hacking (58)
      • HackCTF (12)
      • DreamHACK (7)
      • Webhacking.kr (19)
      • Root Me (6)
      • HTB (5)
      • 기타 (7)
      • 리버싱 소수전공 (2)
    • 기능반 (16)
      • 2과제 (14)
      • 3과제 (2)
    • 기록 (3)
    • 짧은 글들 (0)
    • 기타 (1)
    • Zombie (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BoB 질문
  • BoB 11기
  • 의사결정트리
  • Bob
  • 파이썬
  • 함수
  • BoB 자기소개서
  • 123
  • 앙상블
  • Python
  • 구독자 전용 다시보기
  • BoB 필기
  • KNN
  • BoB 면접
  • OpenCV
  • BoB 자소서
  • 머신러닝
  • 백준
  • BoB 자기소개
  • 얼굴검출

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ursobad
Emotion/인공지능 기초

Dlib을 이용하여 얼굴 랜드마크 찍기

Dlib을 이용하여 얼굴 랜드마크 찍기
Emotion/인공지능 기초

Dlib을 이용하여 얼굴 랜드마크 찍기

2020. 12. 1. 02:04

dlib과 opencv를 이용하여 얼굴에 랜드마크를 찍어보자

 

먼저 opencv와 dlib을 임포트한다.

import cv2, dlib

 

dlib에서 기본적으로 제공하는 face_object_detector 객체를 생성한다.

그리고 얼굴 랜드마크를 찍기 위해 shape_predictor_68_face_landmarks.dat를 불러온다.

detector = dlib.get_frontal_face_detector()
sp = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

 

동영상을 불러온 뒤에 detector로 얼굴좌표를 가져온다.

cam = cv2.VideoCapture('video.mp4')

while True:
    img, frame = cam.read()
    face = detector(frame)

detector는 얼굴의 좌측상단, 좌측상단, 우측상단, 우측상단을 반환해준다.

 

detector에서 제공해주는 좌표로 얼굴위에 사각형을 그린다.

   for f in face:
          #dlib으로 얼굴 검출
          cv2.rectangle(frame, (f.left(), f.top()), (f.right(), f.bottom()), (0,0,255), 2)

 

그리고 얼굴에서 특징점 68개를 찾는다.

        land = sp(frame, f)
        land_list = []

 

land에 저장된 특징점 좌표들을 land_list에 넣고 circle를 이용하여 좌표에 점을 찍는다.

        for l in land.parts():
            land_list.append([l.x, l.y])
            cv2.circle(frame, (l.x, l.y), 3, (255,0,0), -1)

 

 

잘 검출된 것을 볼 수 있다

다음엔 이 특징점들을 넘파이 배열로 저장해보자

 

전체코드

import dlib, cv2

detector = dlib.get_frontal_face_detector()
sp = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

cam = cv2.VideoCapture('video.mp4')

while True:
    img, frame = cam.read()
    face = detector(frame)

    for f in face:
        #dlib으로 얼굴 검출
        cv2.rectangle(frame, (f.left(), f.top()), (f.right(), f.bottom()), (0,0,255), 2)

        land = sp(frame, f)
        land_list = []
        print(land)

        for l in land.parts():
            land_list.append([l.x, l.y])
            cv2.circle(frame, (l.x, l.y), 3, (255,0,0), -1)

    cv2.imshow('A',frame)

    if cv2.waitKey(1)=='q':
        break

cam.release()
cv2.destroyAllWindows()

 

저작자표시 (새창열림)

'Emotion > 인공지능 기초' 카테고리의 다른 글

mediapipe 관련 1  (0) 2021.03.20
Opencv 얼굴 인식(영상)  (0) 2020.11.27
Opencv 얼굴 인식(사진)  (0) 2020.11.27
앙상블 학습법(Ensemble Learning)  (0) 2020.09.29
로지스틱 회귀(Logistic Regression)  (0) 2020.09.29
  • 전체코드
'Emotion/인공지능 기초' 카테고리의 다른 글
  • mediapipe 관련 1
  • Opencv 얼굴 인식(영상)
  • Opencv 얼굴 인식(사진)
  • 앙상블 학습법(Ensemble Learning)
ursobad
ursobad

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.