資源簡介
基于python的一個人臉識別的實例,里面包含源代碼,已經經過測試,是一個很好的入門級的例子
代碼片段和文件信息
import?cv2
import?dlib
import?numpy
import?sys
PREDICTOR_PATH?=?“E:/home/shape_predictor_68_face_landmarks“
SCALE_FACTOR?=?1
FEATHER_AMOUNT?=?11
FACE_POINTS?=?list(range(17?68))
MOUTH_POINTS?=?list(range(48?61))
RIGHT_BROW_POINTS?=?list(range(17?22))
LEFT_BROW_POINTS?=?list(range(22?27))
RIGHT_EYE_POINTS?=?list(range(36?42))
LEFT_EYE_POINTS?=?list(range(42?48))
NOSE_POINTS?=?list(range(27?35))
JAW_POINTS?=?list(range(0?17))
#?Points?used?to?line?up?the?images.
ALIGN_POINTS?=?(LEFT_BROW_POINTS?+?RIGHT_EYE_POINTS?+?LEFT_EYE_POINTS?+
????????????????RIGHT_BROW_POINTS?+?NOSE_POINTS?+?MOUTH_POINTS)
#?Points?from?the?second?image?to?overlay?on?the?first.?The?convex?hull?of?each
#?element?will?be?overlaid.
OVERLAY_POINTS?=?[
????LEFT_EYE_POINTS?+?RIGHT_EYE_POINTS?+?LEFT_BROW_POINTS?+?RIGHT_BROW_POINTS
????NOSE_POINTS?+?MOUTH_POINTS
]
#?Amount?of?blur?to?use?during?colour?correction?as?a?fraction?of?the
#?pupillary?distance.
COLOUR_CORRECT_BLUR_FRAC?=?0.6
detector?=?dlib.get_frontal_face_detector()
predictor?=?dlib.shape_predictor(PREDICTOR_PATH)
class?TooManyFaces(Exception):
????pass
class?NoFaces(Exception):
????pass
def?get_landmarks(im):
????rects?=?detector(im?1)
????if?len(rects)?>?1:
????????raise?TooManyFaces
????if?len(rects)?==?0:
????????raise?NoFaces
????return?numpy.matrix([[p.x?p.y]?for?p?in?predictor(im?rects[0]).parts()])
def?annotate_landmarks(im?landmarks):
????im?=?im.copy()
????for?idx?point?in?enumerate(landmarks):
????????pos?=?(point[0?0]?point[0?1])
????????cv2.putText(im?str(idx)?pos
????????????????????fontFace=cv2.FONT_HERSHEY_script_SIMPLEX
????????????????????fontScale=0.4
????????????????????color=(0?0?255))
????????cv2.circle(im?pos?3?color=(0?255?255))
????return?im
def?draw_convex_hull(im?points?color):
????points?=?cv2.convexHull(points)
????cv2.fillConvexPoly(im?points?color=color)
def?get_face_mask(im?landmarks):
????im?=?numpy.zeros(im.shape[:2]?dtype=numpy.float64)
????for?group?in?OVERLAY_POINTS:
????????draw_convex_hull(im
?????????????????????????landmarks[group]
?????????????????????????color=1)
????im?=?numpy.array([im?im?im]).transpose((1?2?0))
????im?=?(cv2.GaussianBlur(im?(FEATHER_AMOUNT?FEATHER_AMOUNT)?0)?>?0)?*?1.0
????im?=?cv2.GaussianBlur(im?(FEATHER_AMOUNT?FEATHER_AMOUNT)?0)
????return?im
def?transformation_from_points(points1?points2):
????“““
????Return?an?affine?transformation?[s?*?R?|?T]?such?that:
????????sum?||s*R*p1i?+?T?-?p2i||^2
????is?minimized.
????“““
????#?Solve?the?procrustes?problem?by?subtracting?centroids?scaling?by?the
????#?standard?deviation?and?then?using?the?SVD?to?calculate?the?rotation.?See
????#?the?following?for?more?details:
????#???https://en.wikipedia.org/wiki/Orthogonal_Procrustes_problem
????points1?=?points1.astype(numpy.float64)
????points2?=?points2.astype(numpy.float64)
????c1?=?numpy.
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-11-23?11:13??facetest1\
?????目錄???????????0??2018-11-23?19:10??facetest1\.idea\
?????文件?????????511??2018-11-23?18:51??facetest1\.idea\facetest1.iml
?????文件?????????197??2018-11-23?18:51??facetest1\.idea\misc.xm
?????文件?????????270??2018-11-23?11:06??facetest1\.idea\modules.xm
?????文件????????9887??2018-11-23?19:10??facetest1\.idea\workspace.xm
?????目錄???????????0??2018-11-23?19:33??facetest1\fileface\
?????文件????????5628??2018-11-23?19:32??facetest1\fileface\face1.py
?????文件????????7754??2018-11-23?19:33??facetest1\fileface\face2.py
?????文件???????????0??2018-11-23?11:13??facetest1\fileface\__init__.py
?????目錄???????????0??2018-11-23?17:27??facetest1\venv\
?????目錄???????????0??2018-09-20?20:22??facetest1\venv\Include\
?????文件???????45225??2017-09-17?02:38??facetest1\venv\Include\abstract.h
?????文件????????1099??2017-09-17?02:38??facetest1\venv\Include\asdl.h
?????文件?????????230??2017-09-17?02:38??facetest1\venv\Include\ast.h
?????文件?????????792??2017-09-17?02:38??facetest1\venv\Include\bitset.h
?????文件?????????912??2017-09-17?02:38??facetest1\venv\Include\boolob
?????文件?????????922??2017-09-17?02:38??facetest1\venv\Include\bufferob
?????文件????????1941??2017-09-17?02:38??facetest1\venv\Include\bytearrayob
?????文件????????1152??2017-09-17?02:38??facetest1\venv\Include\bytesob
?????文件????????2804??2017-09-17?02:38??facetest1\venv\Include\bytes_methods.h
?????文件?????????651??2017-09-17?02:38??facetest1\venv\Include\cellob
?????文件????????5061??2017-09-17?02:38??facetest1\venv\Include\ceval.h
?????文件????????3002??2017-09-17?02:38??facetest1\venv\Include\classob
?????文件????????2930??2017-09-17?02:38??facetest1\venv\Include\cob
?????文件????????4403??2017-09-17?02:38??facetest1\venv\Include\code.h
?????文件????????6171??2017-09-17?02:38??facetest1\venv\Include\codecs.h
?????文件????????1065??2017-09-17?02:38??facetest1\venv\Include\compile.h
?????文件????????1853??2017-09-17?02:38??facetest1\venv\Include\complexob
?????文件????????2005??2017-09-17?02:38??facetest1\venv\Include\cStringIO.h
?????文件????????8313??2017-09-17?02:38??facetest1\venv\Include\datetime.h
............此處省略2176個文件信息
評論
共有 條評論