본문 바로가기
1st life_Programmer/OpenCV

haar cascading

by Z선배 2019. 2. 28.


사물을 인식하기 위해 haar cascade를 이용해주었어요!


우선 haar cascading 이란?


Haar feature를 기반으로 cascade classifier(다단계 분류)를 이용해 객체를 검출하는 방법이에요!


조금 더 쉽게 설명하자면 다수의 객체 이미지와 객체가 아닌 이미지를 cascade함수로 트레이닝 시켜 객체를 검출하는 방법이라고 이해하세요ㅎㅎ


저는 https://youtu.be/88HdqNDQsEk 를 참고해서 공부했고 영어라서 제가 알아보기 쉽게 코드를 정리해보았습니다 ㅎㅎ


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import cv2
import numpy as np
 
#파일 로드하기
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
 
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
 
#웹캠 열기
cap = cv2.VideoCapture(0)
 
while True:
 
    # ret: 검출 유무 (True, False) img: 픽셀정보
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 
    # 1st : 검출하고자 하는 원본 이미지
    # 2nd,3rd : size
    faces = face_cascade.detectMultiScale(gray, 1.35)
    for (x,y,w,h) in faces:
        cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0), 2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[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('img', img)
 
    # 0xff : 표현식을 16진수로 바꾼다 https://funnymins.tistory.com/54
    k = cv2.waitKey(30& 0xff
    # esc누르면 종료
    if k == 27:
        break
 
cap.release()
cv2.destroyAllWindows()
cs



댓글