python 은 opencv 를 바탕 으로 얼굴 인식 을 실현 합 니 다.
이미지 속 의 얼굴 을 식별 하 다.
#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 얼굴 인식 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.