python 은 opencv 를 바탕 으로 얼굴 인식 을 실현 합 니 다.

opencv 에서 haarcascadefrontalface_default.xml 파일 을 로 컬 에 다운로드 하고 얼굴 인식 을 보조 하기 위해 호출 합 니 다.
이미지 속 의 얼굴 을 식별 하 다.

#coding:utf-8
import cv2 as cv

#       
img = cv.imread('face.png')

#                  
#    - haarcascade_frontalface_default.xml
#    - haarcascade_eye.xml
#    - haarcascade_smile.xml
face_detect = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

#        1.1           5
face_zone = face_detect.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
print ('       :',face_zone)

#            
for x, y, w, h in face_zone:
  #          thickness      
  cv.rectangle(img, pt1=(x, y), pt2=(x+w, y+h),color=[0,0,255], thickness=2)
  #          radius    
  cv.circle(img, center=(x+w//2, y+h//2), radius=w//2, color=[0,255,0], thickness=2)

#             
cv.namedWindow("Easmount-CSDN", 0)

#     
cv.imshow("Easmount-CSDN", img)

#               
cv.waitKey(0)
cv.destroyAllWindows()

주의 하 세 요.이 알고리즘 은 얼굴 만 검사 할 수 있 고 모든 알고리즘 은 일정한 정확도 가 있 습 니 다.위의 그림 에서 보 듯 이 그림 중 하 나 는 사람의 얼굴 로 잘못 검출 되 었 다.
CascadeClassifier:
OpenCV 에서 얼굴 을 감지 하 는 직렬 분류 기로 Haar 도 사용 할 수 있 고 LBP 특징 도 사용 할 수 있다.Haar 특징 분류 기 를 기반 으로 한 대상 검출 기술 은 매우 효과 적 인 기술 이다.그것 은 기계 학습 을 바탕 으로 대량의 양음 샘플 훈련 을 통 해 분류 기 를 얻 었 다.
Haar-like 사각형 특징:
물체 검 측 에 사용 되 는 디지털 이미지 특징 입 니 다.이러한 사각형 특징 템 플 릿 은 두 개 또는 여러 개의 똑 같은 흑백 사각형 이 서로 인접 하여 조합 되 었 고 사각형 특징 치 는 흰색 사각형 의 그 레이스 케 일 값 과 검은색 사각형 의 그 레이스 케 일 값 을 뺀 합 이 며 사각형 특징 은 간단 한 도형 구조,예 를 들 어 선분,가장자리 에 민감 하 다.만약 에 이런 사각형 을 사람의 얼굴 이 아 닌 구역 에 두 면 계 산 된 특징 치 는 사람의 얼굴 특징 치 와 다 르 기 때문에 이런 사각형 은 사람의 얼굴 특징 을 계량 화하 여 사람의 얼굴 과 사람의 얼굴 을 구분 하기 위 한 것 이다.
LBP:
이미지 의 부분 적 인 텍 스 처 특징 을 추출 할 수 있 는 특징 추출 방식 입 니 다.처음에 LBP 연산 자 는 3X3 창 에서 중심 픽 셀 의 픽 셀 값 을 밸브 값 으로 하고 주변 8 개 픽 셀 점 의 픽 셀 값 과 비교 합 니 다.픽 셀 점 의 픽 셀 값 이 밸브 값 보다 크 면 이 픽 셀 점 은 1 로 표시 되 고 그렇지 않 으 면 0 으로 표 시 됩 니 다.이렇게 하면 8 비트 바 이 너 리 코드 를 얻 을 수 있 고 10 진법 즉 LBP 코드 로 바 뀌 어서 이 창의 LBP 값 을 얻 었 습 니 다.이 값 으로 이 창의 무늬 정 보 를 반영 합 니 다.LBPH 는 원시 LBP 에서 의 개선 입 니 다.opencv 지원 하에 우 리 는 함 수 를 직접 호출 하여 LBPH 얼굴 인식 모델 을 만 들 수 있 습 니 다.예 를 들 어 cv.face.LBPHFaceRecognizercreate()。
detectMultiScale:
얼굴 알고리즘 검출,그 매개 변수:
C image 는 검 측 할 입력 그림 을 표시 합 니 다.
C objects 는 검 측 된 사람의 얼굴 대상 시퀀스 를 표시 합 니 다.
C scaleFactor 는 매번 이미지 크기 가 줄 어드 는 비율 을 나타 낸다
C minNeighbors 는 모든 목표 가 적어도 세 번 은 감지 되 어야 진짜 목표 라 고 밝 혔 다.주변 픽 셀 과 창 크기 가 다 르 기 때문에 사람의 얼굴 을 감지 할 수 있 기 때문이다.
C minSize 는 목표 의 최소 사 이 즈 를 표시 합 니 다.
C max Size 는 목표 의 최대 치 수 를 표시 합 니 다.
영상 속 얼굴 인식.
영상 에서 각 프레임 의 이미 지 를 꺼 내 이미지 의 얼굴 인식 을 하고 식별 한 사람의 얼굴 을 표시 하여 각 프레임 의 이미 지 를 표시 한다.

#coding:utf-8
import cv2 as cv
import numpy as np

#     
cap = cv.VideoCapture('wang.mp4')

#                  
#    - haarcascade_frontalface_default.xml
#    - haarcascade_eye.xm
#    - haarcascade_smile.xml
face_detect = cv.CascadeClassifier('haarcascade_frontalface_default.xml')

while True:
  #       
  flag, frame = cap.read()
  if flag == False:
    break

  #     
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

  #        1.1           5
  face_zone = face_detect.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 8)

  #            
  for x, y, w, h in face_zone:
    cv.rectangle(frame, pt1 = (x, y), pt2 = (x+w, y+h), color = [0,0,255], thickness=2)
    cv.circle(frame, center = (x + w//2, y + h//2), radius = w//2, color = [0,255,0], thickness = 2)

  #     
  cv.imshow('video', frame)
  
  #           
  if ord('q') == cv.waitKey(25):
    break

#     
cv.destroyAllWindows()
cap.release()

카메라 에 있 는 사람의 얼굴 을 식별 하 다.

#coding:utf-8
import cv2 as cv

#           
cap = cv.VideoCapture(0)

#                  
#    - haarcascade_frontalface_default.xml
#    - haarcascade_eye.xm
#    - haarcascade_smile.xml
face_detect = cv.CascadeClassifier('haarcascade_frontalface_default.xml')

while True:
  #       
  flag, frame = cap.read()
  if flag == False:
    break

  #     
  gray = cv.cvtColor(frame, code=cv.COLOR_BGR2GRAY)

  #        1.1           5
  face_zone = face_detect.detectMultiScale(gray, scaleFactor = 1.1, minNeighbors = 5)

  #            
  for x, y, w, h in face_zone:
    cv.rectangle(frame, pt1 = (x, y), pt2 = (x+w, y+h), color = [0,0,255], thickness=2)
    cv.circle(frame, center = (x + w//2, y + h//2), radius = w//2, color = [0,255,0], thickness = 2)

  #     
  cv.imshow('video', frame)
  
  #           
  if ord('q') == cv.waitKey(40):
    break

#     
cv.destroyAllWindows()
cap.release()
이상 은 python 이 opencv 를 바탕 으로 얼굴 인식 을 실현 하 는 상세 한 내용 입 니 다.python opencv 얼굴 인식 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기