Python 3 는 Dlib 19.7 을 이용 하여 카메라 의 얼굴 인식 을 실현 하 는 방법

0.머리말
python 개발 을 이용 하여 Dlib 라 이브 러 리 를 통 해 카메라 에 있 는 사람의 얼굴 을 포착 하고 사람의 얼굴 특징 을 추출 하 며 오 씨 거 리 를 계산 하여 미리 저 장 된 사람의 얼굴 특징 과 비교 하여 사람의 얼굴 인식 목적 을 달성 합 니 다.
자동 으로 카메라 에서 사람의 얼굴 사진 을 파 서 로 컬 에 저장 한 다음 에 미리 설 치 된 사람의 얼굴 특징 을 추출 할 수 있다.
파 낸/기 존의 동일 한 사람의 얼굴 사진 여러 장 에 따라 128 D 특징 치 를 추출 한 다음 에 해당 사람의 128 D 특징 평균 치 를 계산한다.
그리고 카메라 에서 실시 간 으로 얻 은 사람의 얼굴 에서 추출 한 특징 치 와 오 씨 거 리 를 계산 하여 같은 사람의 얼굴 인지 아 닌 지 를 판정한다.  
얼굴 인식/face recognition 의 설명:
위 키 백과 얼굴 인식 시스템/face recognition system 에 대한 설명:theywork by comparing selected facial features from given image with faces within a database.
이 프로젝트 는 미리 설 치 된 사람의 얼굴 특징 과 카메라 가 실시 간 으로 얻 은 사람의 얼굴 특징 을 비교 하 는 것 이다.
핵심 은 128 D 얼굴 특징 을 추출 한 뒤 카메라 얼굴 특징 과 미리 설 치 된 특징 얼굴의 유럽식 거 리 를 계산 해 비교 하 는 것 이다.
효 과 는 다음 과 같 습 니 다.person 미리 설 정 된 얼굴/다른 사람 은 미리 설 정 된 얼굴 디 프 가 아 닙 니 다):

그림 1 카메라 얼굴 인식 효과 gif
1.전체 절차
먼저 하인 얼굴 검 측(face detection)과 얼굴 인식(face recognition)을 말한다.전 자 는 등장 경 에서 사람의 얼굴 을 검 측 하 는 목적 을 달성 하면 된다.후 자 는 사람의 얼굴 을 검 측 해 야 할 뿐만 아니 라 기 존의 얼굴 데이터 와 비교 하여 데이터 베이스 에 있 는 지,아니면 신분 표시 와 같은 처 리 를 해 야 한다.얼굴 검사 와 얼굴 인식 두 가 지 는 가끔 헷 갈 릴 수 있다.
제 이전 프로젝트 들 은 모두 dlib 로 얼굴 을 검 측 했 습 니 다.이 프로젝트 가 실현 하고 자 하 는 기능 은 얼굴 인식 기능 입 니 다.dlib 홈 페이지 에서 face 를 빌 렸 습 니 다.recognition.py 이 루틴(link:http://dlib.net/face_recognition.py.html);
핵심 은"dlib"를 이용 하 는 것 입 니 다.face_recognition_resnet_model_v1.dat'라 는 model 은 사람의 얼굴 이미지 의 128 D 특징 을 추출 한 다음 에 서로 다른 사람의 얼굴 이미지 의 128 D 특징 보다 한도 값 을 설정 하여 오 씨 거 리 를 계산 하여 같은 얼굴 인지 아 닌 지 를 판단 한다.

# face recognition model, the object maps human faces into 128D vectors
facerec = dlib.face_recognition_model_v1("dlib_face_recognition_resnet_model_v1.dat")
 
shape = predictor(img, dets[0])
face_descriptor = facerec.compute_face_descriptor(img, shape)
  

그림 2 전체적인 디자인 절차
2.소스 코드 소개
주로
  • get_face_from_camera.py ,
  • get_features_into_CSV.py,
  • face_reco_from_camera.py
  • 이 세 개의 py 파일;
    2.1get_face_from_camera.py/XXX 얼굴 데이터 수집 구축
    얼굴 인식 은 추출 한 이미지 데이터 와 기 존 이미지 데 이 터 를 비교 분석 해 야 하기 때문에 이 py 파일 이 실현 하 는 기능 은 XXX 를 구축 하 는 얼굴 데 이 터 를 수집 하 는 것 이다.
    프로그램 은 호출 된 카메라 가 실시 간 으로 가 져 온 그림 을 표시 하 는 창 을 생 성 합 니 다(카메라 호출 방식 은 제 다른 블 로그 https://www.jb51.net/article/135512.htm 을 참고 할 수 있 습 니 다).
    s 키 를 누 르 면 현재 동 영상 흐름 에 있 는 사람의 얼굴 이미 지 를 저장 할 수 있 습 니 다.저 장 된 경 로 는 path 입 니 다.save = “xxxx/get_from_camera/"규정;
    q 키 를 누 르 면 창 을 종료 합 니 다.
    카메라 의 호출 은 opencv 라 이브 러 리 의 cv2.VideoCapture(0)를 이용 하 는 것 입 니 다.이 매개 변 수 는 0 으로 노트북 의 기본 카 메 라 를 호출 하 는 것 을 의미 합 니 다.기 존 비디오 파일 에 호출 할 수도 있 습 니 다.

    그림 3 getface_from_camera.py 의 인터페이스
    그러면 pathsave 가 지정 한 디 렉 터 리 에서 캡 처 한 사람의 얼굴 얻 기;

    그림 4 포 획 된 한 무리의 얼굴
    원본 코드 는 다음 과 같 습 니 다.
    
    # 2018-5-11
    # By TimeStamp
    # cnblogs: http://www.cnblogs.com/AdaminXie
    
    import dlib #       dlib
    import numpy as np #       numpy
    import cv2 #       OpenCv
    
    # dlib   
    detector = dlib.get_frontal_face_detector()
    predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
    
    #   cv2     
    cap = cv2.VideoCapture(0)
    
    # cap.set(propId, value)
    #       ,propId       ,value      
    cap.set(3, 480)
    
    #   screenshoot    
    cnt_ss = 0
    
    #         
    cnt_p = 0
    
    #   
    path_save = "F:/code/python/P_dlib_face_reco/data/get_from_camera/"
    
    # cap.isOpened()   true/false          
    while cap.isOpened():
    
     # cap.read()
     #      :
     #      true/false,            /       
     #     ,       q
     flag, im_rd = cap.read()
    
     #       1ms,   0       
     kk = cv2.waitKey(1)
    
     #    
     img_gray = cv2.cvtColor(im_rd, cv2.COLOR_RGB2GRAY)
    
     #    rects
     rects = detector(img_gray, 0)
    
     # print(len(rects))
    
     #        
     font = cv2.FONT_HERSHEY_SIMPLEX
    
     if (len(rects) != 0):
     #      
    
     #    
     for k, d in enumerate(rects):
    
     #       
     # (x,y), (  width,   height)
     pos_start = tuple([d.left(), d.top()])
     pos_end = tuple([d.right(), d.bottom()])
    
     #        
     height = d.bottom() - d.top()
     width = d.right() - d.left()
    
     #             
     im_blank = np.zeros((height, width, 3), np.uint8)
    
     im_rd = cv2.rectangle(im_rd, tuple([d.left(), d.top()]), tuple([d.right(), d.bottom()]), (0, 255, 255), 2)
     im_blank = np.zeros((height, width, 3), np.uint8)
    
     #        
     if (kk == ord('s')):
     cnt_p += 1
     for ii in range(height):
      for jj in range(width):
      im_blank[ii][jj] = im_rd[d.top() + ii][d.left() + jj]
     print(path_save + "img_face_" + str(cnt_p) + ".jpg")
     cv2.imwrite(path_save + "img_face_" + str(cnt_p) + ".jpg", im_blank)
     cv2.putText(im_rd, "faces: " + str(len(rects)), (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
    
     else:
     #        
     cv2.putText(im_rd, "no face", (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
    
     #     
     im_rd = cv2.putText(im_rd, "s: save face", (20, 400), font, 0.8, (255, 255, 255), 1, cv2.LINE_AA)
     im_rd = cv2.putText(im_rd, "q: quit", (20, 450), font, 0.8, (255, 255, 255), 1, cv2.LINE_AA)
     
     #   q   
     if (kk == ord('q')):
     break
    
     #     
     cv2.imshow("camera", im_rd)
    
    #      
    cap.release()
    
    #        
    cv2.destroyAllWindows()
    2.2get_features_into_CSV.py/추출 특징 을 CSV 에 저장 합 니 다.
    이미 XXX 의 얼굴 이미 지 를 얻 었 으 니 지금 은 그의 얼굴 특징 을 추출 해 야 한다.
    여기 dlib 라 이브 러 리 의 face recognition model 얼굴 인식 모델 을 빌 립 니 다.
    
    # face recognition model, the object maps human faces into 128D vectors
    facerec = dlib.face_recognition_model_v1("dlib_face_recognition_resnet_model_v1.dat")
    
    # detector to find the faces
    detector = dlib.get_frontal_face_detector()
    
    # shape predictor to find the face landmarks
    predictor = dlib.shape_predictor("shape_predictor_5_face_landmarks.dat")
    
    #     
    img = io.imread(path_img)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
    dets = detector(img_gray, 1)
    shape = predictor(img_gray, dets[0])
    face_descriptor = facerec.compute_face_descriptor(img_gray, shape)
    우 리 는 어떤 그림 에 대해,face 를 볼 수 있다.descriptor 의 출력 결과:
    녹색 상자 안 은 128 D 특징 을 되 돌려 주 는 함수 입 니 다.
    빨간색 상자 에서 이 함 수 를 호출 하여 img 를 계산 합 니 다.face_13.jpg;
    노란색 상자 의 출력 이 128 D 인 벡터 를 볼 수 있 습 니 다.

    그림 5 는 한 장의 그림 의 128 D 특징의 계산 결 과 를 되 돌려 준다.
    그래서 우 리 는 path 를save 에 있 는 그림 을 대량으로 특징 계산 한 다음 CSV 에 기록 합 니 다(write 를 이용 하여into_CSV 함수),내 csv 의 이름 은 defaultperson.csv;
    줄 수(얼굴 수)*128 열의 특징 CSV 를 얻 을 수 있 습 니 다.
    이것 은 누군가의 얼굴 특징 입 니 다.그리고 128 D 특징의 평균 값 을 계산 하여 mean(coptute 이용)을 구 합 니 다.the_평균 함수
    실행 중인 출력 결과,이 128 D 의 특징 값 은 default 입 니 다.person 의 특징;
    즉,우리 가 내장/미리 설 치 된 얼굴 은 나중에 카메라 가 잡 은 얼굴 을 가 져 와 이 특징 치 와 비교 하여 얼굴 인식 처 리 를 해 야 한다.
    [-0.030892765492592986, 0.13333227054068916, 0.054221574805284799, -0.050820438289328626, -0.056331159841073189, 0.0039378538311116004, -0.044465327145237675, -0.13096490031794497, 0.14215188983239627, -0.084465635842398593, 0.34389359700052363, -0.062936659118062566, -0.24372901571424385, -0.13270603316394905, -0.0472818422866495, 0.15475224742763921, -0.24415240554433121, -0.11213862150907516, 0.032288033417180964, 0.023676671577911628, 0.098508275653186594, -0.010117797634417289, 0.0048202000815715448, -0.014808513420192819, -0.060100053486071135, -0.34934839135722112, -0.095795629448012301, -0.050788544706608117, 0.032316677762489567, -0.099673464894294739, -0.080181991975558434, 0.096361607705291952, -0.1823408101734362, -0.045472671817007815, -0.0066827326326778062, 0.047393877549391041, -0.038414973079373964, -0.039067085930391363, 0.15961966781239761, 0.0092458106136243598, -0.16182226570029007, 0.026322136191945327, -0.0039144184832510193, 0.2492692768573761, 0.19180528427425184, 0.022950534855848866, -0.019220497949342979, -0.15331173021542399, 0.047744840089427795, -0.17038608616904208, 0.026140184680882254, 0.19366614363695445, 0.066497623724372762, 0.07038829416820877, -0.0549700813073861, -0.11961311768544347, -0.032121153940495695, 0.083507449611237169, -0.14934051350543373, 0.011458799806668571, 0.10686114273573223, -0.10744074888919529, -0.04377919611962218, -0.11030520381111848, 0.20804878441910996, 0.093076545941202266, -0.11621182490336268, -0.1991656830436305, 0.10751579348978244, -0.11251544991606161, -0.12237925866716787, 0.058218707869711672, -0.15829276019021085, -0.17670038891466042, -0.2718416170070046, 0.034569320955166689, 0.30443575821424784, 0.061833358712886512, -0.19622498672259481, 0.011373612000361868, -0.050225612756453063, -0.036157087079788507, 0.12961127491373764, 0.13962576616751521, -0.0074232793168017737, 0.020964263007044792, -0.11185114399382942, 0.012502493042694894, 0.17834208513561048, -0.072658227462517586, -0.041312719401168194, 0.25095899873658228, -0.056628625839948654, 0.10285118379090961, 0.046701753217923012, 0.042323612264896691, 0.0036216247826814651, 0.066720707440062574, -0.16388990533979317, -0.0193739396421925, 0.027835704435251261, -0.086023958105789985, -0.05472404568603164, 0.14802298341926776, -0.10644183582381199, 0.098863413851512108, 0.00061285014778963834, 0.062096107555063146, 0.051960245755157973, -0.099548895108072383, -0.058173993112225285, -0.065454461562790375, 0.14721672511414477, -0.25363486848379435, 0.20384312381869868, 0.16890435312923632, 0.097537552447695477, 0.087824966562421697, 0.091438713434495431, 0.093809676797766431, -0.034379941362299417, -0.085149037210564868, -0.24900743130006289, 0.021165960517368819, 0.076710369830068792, -0.0061752907196549996, 0.028413473285342519, -0.029983982541843465]
    원본 코드:
    
    # 2018-5-11
    # By TimeStamp
    # cnblogs: http://www.cnblogs.com/AdaminXie
    
    # return_128d_features()        128d  
    # write_into_csv()                  csv
    # compute_the_mean()  csv   128d  ,       
    
    import cv2
    import os
    import dlib
    from skimage import io
    import csv
    import numpy as np
    import pandas as pd
    
    path_pics = "F:/code/python/P_dlib_face_reco/data/get_from_camera/"
    path_csv = "F:/code/python/P_dlib_face_reco/data/csvs/"
    
    # detector to find the faces
    detector = dlib.get_frontal_face_detector()
    
    # shape predictor to find the face landmarks
    predictor = dlib.shape_predictor("shape_predictor_5_face_landmarks.dat")
    
    # face recognition model, the object maps human faces into 128D vectors
    facerec = dlib.face_recognition_model_v1("dlib_face_recognition_resnet_model_v1.dat")
    
    #        128D  
    def return_128d_features(path_img):
     img = io.imread(path_img)
     img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
     dets = detector(img_gray, 1)
    
     if(len(dets)!=0):
     shape = predictor(img_gray, dets[0])
     face_descriptor = facerec.compute_face_descriptor(img_gray, shape)
     else:
     face_descriptor = 0
     print("no face")
    
     # print(face_descriptor)
     return face_descriptor
    
    #return_128d_features(path_pics+"img_face_13.jpg")
    
    #              ,  csv
    #   input:
    # path_pics:         
    # path_csv:     csv  
    
    def write_into_csv(path_pics ,path_csv):
     dir_pics = os.listdir(path_pics)
    
     with open(path_csv, "w", newline="") as csvfile:
     writer = csv.writer(csvfile)
     for i in range(len(dir_pics)):
     #   return_128d_features()  128d  
     print(path_pics+dir_pics[i])
     features_128d = return_128d_features(path_pics+dir_pics[i])
     # print(features_128d)
     #               
     if features_128d==0:
     i += 1
     else:
     writer.writerow(features_128d)
    
    #write_into_csv(path_pics, path_csv+"default_person.csv")
    
    path_csv_rd = "F:/code/python/P_dlib_face_reco/data/csvs/default_person.csv"
    
    #  csv     ,  128d     
    def compute_the_mean(path_csv_rd):
     column_names = []
    
     for i in range(128):
     column_names.append("features_" + str(i + 1))
    
     rd = pd.read_csv(path_csv_rd, names=column_names)
    
     #   128      
     feature_mean = []
    
     for i in range(128):
     tmp_arr = rd["features_"+str(i+1)]
     tmp_arr = np.array(tmp_arr)
    
     #           
     tmp_mean = np.mean(tmp_arr)
    
     feature_mean.append(tmp_mean)
    
     print(feature_mean)
     return feature_mean
    
    compute_the_mean(path_csv_rd)
    2.3 face_reco_from_camera.py/실시 간 얼굴 인식 비교 분석
    이 py 는 카 메 라 를 호출 하여 카메라 에 있 는 사람의 얼굴 을 포착 한 다음 에 사람의 얼굴 이 감지 되면 카메라 에 있 는 사람의 얼굴 을 128 D 의 특징 을 추출 한 다음 에 미리 설 치 된 defaultperson 의 128 D 특징 은 유럽식 거 리 를 계산 하고 비교적 작 으 면 한 사람 으로 판정 할 수 있 으 며 그렇지 않 으 면 한 사람 이 아니다.
    오 씨 거리 대비 한도 값 설정,returneuclidean_distance 함수 의 dist 변수;
    내 가 여기 있 는 프로그램 에서 지정 한 것 은 0.4 이 고 구체 적 인 한도 값 은 실제 상황 이나 측정 결과 에 따라 수정 할 수 있다.
    원본 코드:
    
    # 2018-5-11
    # By TimeStamp
    # cnblogs: http://www.cnblogs.com/AdaminXie
    
    import dlib #       dlib
    import numpy as np #       numpy
    import cv2 #       OpenCv
    
    # face recognition model, the object maps human faces into 128D vectors
    facerec = dlib.face_recognition_model_v1("dlib_face_recognition_resnet_model_v1.dat")
    
    #             
    def return_euclidean_distance(feature_1,feature_2):
     feature_1 = np.array(feature_1)
     feature_2 = np.array(feature_2)
     dist = np.sqrt(np.sum(np.square(feature_1 - feature_2)))
     print(dist)
    
     if dist > 0.4:
     return "diff"
     else:
     return "same"
    
    
    features_mean_default_person = [-0.030892765492592986, 0.13333227054068916, 0.054221574805284799, -0.050820438289328626, -0.056331159841073189, 0.0039378538311116004, -0.044465327145237675, -0.13096490031794497, 0.14215188983239627, -0.084465635842398593, 0.34389359700052363, -0.062936659118062566, -0.24372901571424385, -0.13270603316394905, -0.0472818422866495, 0.15475224742763921, -0.24415240554433121, -0.11213862150907516, 0.032288033417180964, 0.023676671577911628, 0.098508275653186594, -0.010117797634417289, 0.0048202000815715448, -0.014808513420192819, -0.060100053486071135, -0.34934839135722112, -0.095795629448012301, -0.050788544706608117, 0.032316677762489567, -0.099673464894294739, -0.080181991975558434, 0.096361607705291952, -0.1823408101734362, -0.045472671817007815, -0.0066827326326778062, 0.047393877549391041, -0.038414973079373964, -0.039067085930391363, 0.15961966781239761, 0.0092458106136243598, -0.16182226570029007, 0.026322136191945327, -0.0039144184832510193, 0.2492692768573761, 0.19180528427425184, 0.022950534855848866, -0.019220497949342979, -0.15331173021542399, 0.047744840089427795, -0.17038608616904208, 0.026140184680882254, 0.19366614363695445, 0.066497623724372762, 0.07038829416820877, -0.0549700813073861, -0.11961311768544347, -0.032121153940495695, 0.083507449611237169, -0.14934051350543373, 0.011458799806668571, 0.10686114273573223, -0.10744074888919529, -0.04377919611962218, -0.11030520381111848, 0.20804878441910996, 0.093076545941202266, -0.11621182490336268, -0.1991656830436305, 0.10751579348978244, -0.11251544991606161, -0.12237925866716787, 0.058218707869711672, -0.15829276019021085, -0.17670038891466042, -0.2718416170070046, 0.034569320955166689, 0.30443575821424784, 0.061833358712886512, -0.19622498672259481, 0.011373612000361868, -0.050225612756453063, -0.036157087079788507, 0.12961127491373764, 0.13962576616751521, -0.0074232793168017737, 0.020964263007044792, -0.11185114399382942, 0.012502493042694894, 0.17834208513561048, -0.072658227462517586, -0.041312719401168194, 0.25095899873658228, -0.056628625839948654, 0.10285118379090961, 0.046701753217923012, 0.042323612264896691, 0.0036216247826814651, 0.066720707440062574, -0.16388990533979317, -0.0193739396421925, 0.027835704435251261, -0.086023958105789985, -0.05472404568603164, 0.14802298341926776, -0.10644183582381199, 0.098863413851512108, 0.00061285014778963834, 0.062096107555063146, 0.051960245755157973, -0.099548895108072383, -0.058173993112225285, -0.065454461562790375, 0.14721672511414477, -0.25363486848379435, 0.20384312381869868, 0.16890435312923632, 0.097537552447695477, 0.087824966562421697, 0.091438713434495431, 0.093809676797766431, -0.034379941362299417, -0.085149037210564868, -0.24900743130006289, 0.021165960517368819, 0.076710369830068792, -0.0061752907196549996, 0.028413473285342519, -0.029983982541843465]
    
    
    # dlib   
    detector = dlib.get_frontal_face_detector()
    predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
    
    #   cv2     
    cap = cv2.VideoCapture(0)
    
    # cap.set(propId, value)
    #       ,propId       ,value      
    cap.set(3, 480)
    
    def get_128d_features(img_gray):
     dets = detector(img_gray, 1)
     if (len(dets) != 0):
     shape = predictor(img_gray, dets[0])
     face_descriptor = facerec.compute_face_descriptor(img_gray, shape)
     else:
     face_descriptor=0
     return face_descriptor
    
    # cap.isOpened()   true/false          
    while (cap.isOpened()):
    
     # cap.read()
     #      :
     #      true/false,            /       
     #     ,       
     flag, im_rd = cap.read()
    
     #       1ms,   0       
     kk = cv2.waitKey(1)
    
     #    
     img_gray = cv2.cvtColor(im_rd, cv2.COLOR_RGB2GRAY)
    
     #    rects
     rects = detector(img_gray, 0)
    
     # print(len(rects))
    
     #        
     font = cv2.FONT_HERSHEY_SIMPLEX
    
     cv2.putText(im_rd, "q: quit", (20, 400), font, 0.8, (0, 255, 255), 1, cv2.LINE_AA)
    
     if (len(rects) != 0):
     #      
    
     #                     
     features_rd = get_128d_features(im_rd)
     compare = return_euclidean_distance(features_rd, features_mean_default_person)
    
     im_rd = cv2.putText(im_rd, compare.replace("same", "default_person"), (20, 350), font, 0.8, (0, 255, 255), 1, cv2.LINE_AA)
    
     #    
     for k, d in enumerate(rects):
    
     #      
     im_rd = cv2.rectangle(im_rd, tuple([d.left(), d.top()]), tuple([d.right(), d.bottom()]), (0, 255, 255), 2)
    
     cv2.putText(im_rd, "faces: " + str(len(rects)), (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
    
     else:
     #        
     cv2.putText(im_rd, "no face", (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
    
    
     #   q   
     if (kk == ord('q')):
     break
    
     #     
     cv2.imshow("camera", im_rd)
    
    #      
    cap.release()
    
    #        
    cv2.destroyAllWindows()
    실시 간 출력 결과:

    그림 6 실시 간 으로 출력 된 오 씨 거리 결과
    실시 간 출력 결 과 를 통 해 비교적 뚜렷하게 볼 수 있다.
    녹색 부분 출력:나 자신(즉,추출 특징 을 분석 한 defaultperson)시 계 산 된 유럽식 거 리 는 기본적으로 0.2 정도 이다.
    빨간색 부분 출력:그림 을 바 꾸 면 트럼프 와 같이 유럽식 거리 계산 결과 가 0.8 에 달 하 는 것 을 뚜렷하게 볼 수 있다.이때 판정 할 수 있다.나중에 이 얼굴 은 우리 가 미리 설정 한 얼굴 이 아니다.
    그래서 앞서 언급 한 유럽식 거리 계산 대비 의 한도 값 은 이 를 통 해 설정 할 수 있 고 본 프로젝트 에서 얻 은 것 은 0.4 이다.
    3.총화
    그 전에 그 카메라 의 얼굴 검 측 에 이 어 쓴 것 이지 만 지금까지 끌 고 와 서 업 데 이 트 했 습 니 다.쓴 것 도 비교적 거 칠 고 구체 적 인 수요 와 응용 장면 을 수정 할 수 있 습 니 다.어떤 문제 가 있 으 면 메 시 지 를 남기 거나 직접 메 일 을 보 낼 수 있 습 니 다.미안 하 다
    핵심 은 사람의 얼굴 특징 을 추출 한 다음 에 유럽식 거리 와 미리 설 치 된 특징 얼굴 을 계산 하여 비교 하 는 것 이다.
    그러나 이 실시 간 으로 카메라 의 얼굴 을 비교 하고 실시 간 으로 카메라 얼굴의 특징 치 를 계산 한 다음 에 오 씨 거 리 를 계산 해 야 하기 때문에 계 산 량 이 비교적 많 고 카메라 영상 흐름 이 끊 길 수 있다.
    \#내 GitHub 에 코드 가 올 라 왔 습 니 다.도움 이 된다 면 스타 아래:https://github.com/coneypo/Dlib_face_recognition_from_camera
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기