사물을 인식하기 위해 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.3, 5) 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 |
댓글