Python 환경 은 OpenCV 를 사용 하여 사람의 얼굴 을 검사 하여 튜 토리 얼 을 실현 합 니 다.

문장 개술
본 고 는 Python 환경 에서 어떻게 OpenCV 로 사람의 얼굴 을 검사 하 는 지 에 대해 이야기 하고 자 한다.본 고의 주요 내용 은 다음 과 같다.
1.사진 속 사람의 얼굴 검사
2.영상 에 나 오 는 사람의 얼굴 실시 간 검색
3.설 비 를 운반 하 는 카메라 로 사람의 얼굴 을 실시 간 으로 검사한다.
준비 작업
미리 준비 한 것:
파 이 썬 3 설치
다운로드 하여 OpenCV 라 이브 러 리 를 설치 하 는 방법 은?
pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com/pypi/simple
특징 데이터 HAAR 과 LBP 를 다운로드 하면 이 두 가지 데 이 터 는 모두 사람의 얼굴 특징 에 대한 추출 을 실현 할 수 있다.HAAR 은 대부분이 소수 계산 이기 때문에 연산 속도 가 느 리 고 LBP 는 대부분이 정수 계산 운행 속도 가 비교적 빠르다.그림 에서 보 듯 이 이번 인 스 턴 스 는 빨 간 상자 의 텍스트,다른 텍스트,예 를 들 어 첫 번 째 haarcascade 를 사용 합 니 다.eye.xml 는 눈 인식 텍스트 입 니 다.다음 에 사용 하 겠 습 니 다.
(1)코드 와 설명

import cv2 as cv
import numpy as np

def face_detect_demo():#      
  gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)#         ,                 
  #     HAAR LBP    ,        ,  :    ‘/' ‘\'     
  #         cv.CascadeClassifier,      
  # face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")
  face_detector = cv.CascadeClassifier(
    "D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")
  #              ,          ,                ,      1.02 ,                            ,       5         ,                
  faces = face_detector.detectMultiScale(gray, 1.02, 5)
  for x, y, w, h in faces:#     
    #rectangle    ,        ,        ,            ,     ,     
    cv.rectangle(src, (x, y), (x+w, y+h), (0, 0, 255), 2)
    cv.imshow("result", src)#     

src = cv.imread("D:/pyproject/cv_renlianjiance/cvrenxiangpic/1.jpg")#   JPG png   
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)#      
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
face_detect_demo()
cv.waitKey(0)
cv.destroyAllWindows()#            
(2)결과 전시

2.영상 속 얼굴 검사
(1)코드 와 설명

import cv2 as cv
import numpy as np

def face_detect_demo(image):
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  # face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")
  face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")
  faces = face_detector.detectMultiScale(gray, 1.02, 5)
  for x, y, w, h in faces:
    cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
  cv.imshow("result", image)


capture = cv.VideoCapture("D:/pyproject/cv_renlianjiance/video/1.mp4")
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):
  #      ,ret,frame  cap.read()        。  ret    ,            True,         ,       False。frame        ,      。
  ret, frame = capture.read()
  # cv.flip        , y   , 0:  x   , <0: x、y     
  frame = cv.flip(frame, 1)
  face_detect_demo(frame)
  #waitKey()            ,   1,    1ms        ,      ;
  c = cv.waitKey(10)
  if c == 27:#     ‘ESC'    
    break

#cv.waitKey(0)   0, cv2.waitKey(0)        ,       ,;
cv.waitKey(0)
cv.destroyAllWindows()#            
(2)결과 전시

3.장비 에 있 는 카 메 라 를 이용 하여 얼굴 검 사 를 하 는데 사실은 2 의 코드 와 마찬가지 로 카 메 라 를 켜 는 것 이지 동 영상 파일 을 읽 는 것 이 아니다.
코드 와 설명

import cv2 as cv
import numpy as np

def face_detect_demo(image):
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  # face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")
  face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")
  faces = face_detector.detectMultiScale(gray, 1.02, 5)
  for x, y, w, h in faces:
    cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
  cv.imshow("result", image)


capture = cv.VideoCapture(0)#   0           
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):
  #      ,ret,frame  cap.read()        。  ret    ,            True,         ,       False。frame        ,      。
  ret, frame = capture.read()
  # cv.flip        , y   , 0:  x   , <0: x、y     
  frame = cv.flip(frame, 1)
  face_detect_demo(frame)
  #waitKey()            ,   1,    1ms        ,      ;
  c = cv.waitKey(10)
  if c == 27:#     ‘ESC'    
    break

#cv.waitKey(0)   0, cv2.waitKey(0)        ,       ,;
cv.waitKey(0)
cv.destroyAllWindows()#            
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기