분류 전체보기 428

face_landmark 방법으로 얼굴 검출하기

이번 포스팅에서는 face_landmark 방법을 이용해 사진에 있는 사람의 얼굴을 검출해보는 방법을 알아보겠다. import numpy as np import dlib import cv2 RIHGT_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(17,27)) ALL=list(range(0,68)) # 학습된 모델로 dlib에서 미리 만들어놓은 데이터이다. predictor_file='./model/shape_predictor_68_face_landmarks.dat' image_file='...

Object Detection 2021.08.15

enumerate

enumerate()는 '열거하다'는 뜻의 함수로, 순서가 있는 자료형(list,set,tuple등)을 인덱스를 포함한 enumerate 객체로 리턴한다. 사용 방법은 다음과 같다. a=[6,3,7,1,2,3] b=enumerate(a) print(b) print(list(b)) 이처럼 list()로 결과를 추출할 수 있는데, 인덱스를 자동으로 부여해주기 때문에 매우 편리하게 활용할 수 있다. 그렇다면 a=['a1','b2','c3']가 있을 때 이 리스트의 인덱스와 값을 함께 출력하려면 어떻게 해야 할까? a=['a1','b2','c3'] for i,v in enumerate(a): print(i,v)

python/문법 2021.08.15

제너레이터(Generator)

제너레이터는 루프의 반복 동작을 제어할 수 있는 루틴 형태를 말한다. 예를 들어 임의의 조건으로 숫자 1억 개를 만들어내 계산하는 프로그램을 작성한다고 가정해보자. 이 경우 제너레이터가 없다면 메모리 어딘가에 만들어낸 숫자 1억 개를 보관하고 있어야 한다. 그러나 제너레이터를 이용하면 단순히 제너레이터만 생성해두고 필요할 때 언제든 숫자를 만들어낼 수 있다. 이때 yied 구문을 사용하면 제너레이터를 리턴할 수 있다. 기존의 함수는 return 구문을 맞닥뜨리면 값을 리턴하고 모든 함수의 동작을 종료한다. 그러나 yield는 제너레이터가 여기까지 실행 중이던 값을 내보낸다는 의미로, 중간값을 리턴한 다음 함수는 종료되지 않고 계속해서 맨 끝에 도달할 때까지 실행된다. 물론 다음 코드의 경우처럼 while..

python/문법 2021.08.15