Published on

OpenCV로 아는 얼굴인지 확인하기

Authors
  • avatar
    Name
    Inhwan Cho
    Twitter
  • 예제 코드
import cv2
import numpy as np
import face_recognition

imgElon = face_recognition.load_image_file('elon1.png')
imgTest = face_recognition.load_image_file('surprised_man.jpg')

imgTest = cv2.cvtColor(imgTest,cv2.COLOR_BGR2RGB)
imgElon = cv2.cvtColor(imgElon,cv2.COLOR_BGR2RGB)

faceLoc = face_recognition.face_locations(imgElon)[0]
encodeElon = face_recognition.face_encodings(imgElon)[0]
cv2.rectangle(imgElon,(faceLoc[1],faceLoc[2]),(faceLoc[3],faceLoc[0]),(255,0,255),2)
print(faceLoc) # (118, 304, 304, 118) top, right, bottom, left

faceLocTest = face_recognition.face_locations(imgTest)[0]
encodeTest = face_recognition.face_encodings(imgTest)[0]
cv2.rectangle(imgTest,(faceLocTest[1],faceLocTest[2]),(faceLocTest[3],faceLocTest[0]),(255,0,255),2)


results = face_recognition.compare_faces([encodeElon], encodeTest)
faceDis = face_recognition.face_distance([encodeElon], encodeTest)
print(results, faceDis)
cv2.putText(imgTest, f'{results} {round(faceDis[0],2)}', (50,50), cv2.FONT_HERSHEY_COMPLEX,1,
                            (0,0,255),1)


cv2.imshow('imtest',imgTest)
cv2.imshow('imelon',imgElon)
cv2.waitKey(0)
  • results가 True면 동일 인물, False면 다른 인물로 판단