ursobad
ursobad
ursobad
전체 방문자
오늘
어제
  • 분류 전체보기 (116)
    • Emotion (35)
      • 파이썬 (10)
      • 문제 (10)
      • 인공지능 기초 (15)
    • Best of the Best (3)
    • Hacking (58)
      • HackCTF (12)
      • DreamHACK (7)
      • Webhacking.kr (19)
      • Root Me (6)
      • HTB (5)
      • 기타 (7)
      • 리버싱 소수전공 (2)
    • 기능반 (16)
      • 2과제 (14)
      • 3과제 (2)
    • 기록 (3)
    • 짧은 글들 (0)
    • 기타 (1)
    • Zombie (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • OpenCV
  • 파이썬
  • BoB 자기소개서
  • Bob
  • 함수
  • BoB 자기소개
  • 의사결정트리
  • 머신러닝
  • KNN
  • BoB 11기
  • BoB 질문
  • BoB 필기
  • 123
  • BoB 자소서
  • 구독자 전용 다시보기
  • BoB 면접
  • 얼굴검출
  • Python
  • 앙상블

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ursobad

ursobad

Opencv 얼굴 인식(영상)
Emotion/인공지능 기초

Opencv 얼굴 인식(영상)

2020. 11. 27. 13:30

만약 전 포스팅을 보지 않았다면 보고 오는 것이 좋다.

ursobad.tistory.com/46

 

Opencv 얼굴 인식(사진)

간단하게 opencv에서 제공하는 xml파일로 사진에서 얼굴, 눈, 상체 인식을 해봤다. import cv2 face_classifier = cv2.CascadeClassifier('C:\\Users\\gotti\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\s..

ursobad.tistory.com

 

일단 마찬가지로 opencv와 xml 파일을 불러온다

import cv2

face_classifier = cv2.CascadeClassifier('C:\\Users\\gotti\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('C:\\Users\\gotti\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages\\cv2\\data\\haarcascade_eye.xml')

 

이미지와 달리 비디오는 .VideoCapture(경로)로 불러온다.

cam = cv2.VideoCapture("video.mp4")

 

opencv는 영상을 프레임단위로 쪼개서 얼굴을 검출한다.

while(True):
    img, frame = cam.read()
    grayframe = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    faces = face_classifier.detectMultiScale(gray,1.1,3)

.read는 비디오 상태와 프레임을 받아온다

ctvColor로 이미지를 회색으로 만든다.

그리고 faces에 검출한 얼굴 좌표를 저장한다

 

for (x,y,w,h) in faces:
        cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = frame[y:y+h, x:x+w]
        eyes = eye_cascade.detectMultiScale(roi_gray)
        for (ex, ey, ew, eh) in eyes:
            cv2.rectangle(roi_color, (ex,ey), (ex+ew, ey+eh),(0,255,0),2)

이미지와 마찬가지로 얼굴 좌표에 사각형을 그리고 그 안에서 눈을 검출한다.

 

    cv2.imshow('Face',frame)
        if cv2.waitKey(1)==27:
            break
            
cam.release()
cv2.destroyAllWindows()

이제 비디오를 띄운다.

 

나름 잘 된다

여러 영상에서 테스트해본 결과 얼굴은 잘 검출하지만 눈은 잘 찾지 못한다.

 

전체 코드

import cv2

face_classifier = cv2.CascadeClassifier('C:\\Users\\gotti\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('C:\\Users\\gotti\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages\\cv2\\data\\haarcascade_eye.xml')

cam = cv2.VideoCapture("vidoe.mp4")

a = 1

while True:
    img, frame = cam.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = face_classifier.detectMultiScale(gray,1.1,3)

    for (x,y,w,h) in faces:
        cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = frame[y:y+h, x:x+w]
        eyes = eye_cascade.detectMultiScale(roi_gray)
        for (ex, ey, ew, eh) in eyes:
            cv2.rectangle(roi_color, (ex,ey), (ex+ew, ey+eh),(0,255,0),2)

    frame = cv2.resize(frame,(int(frame.shape[1]*a), int(frame.shape[0]*a)))

    cv2.imshow('Face',frame)
    if cv2.waitKey(1)==27:
        break

cam.release()
cv2.destroyAllWindows()
저작자표시 (새창열림)

'Emotion > 인공지능 기초' 카테고리의 다른 글

mediapipe 관련 1  (0) 2021.03.20
Dlib을 이용하여 얼굴 랜드마크 찍기  (0) 2020.12.01
Opencv 얼굴 인식(사진)  (0) 2020.11.27
앙상블 학습법(Ensemble Learning)  (0) 2020.09.29
로지스틱 회귀(Logistic Regression)  (0) 2020.09.29
    'Emotion/인공지능 기초' 카테고리의 다른 글
    • mediapipe 관련 1
    • Dlib을 이용하여 얼굴 랜드마크 찍기
    • Opencv 얼굴 인식(사진)
    • 앙상블 학습법(Ensemble Learning)
    ursobad
    ursobad

    티스토리툴바