728x90
HOG(Hostogram of Oriented Gradient)
- 보행자 검출을 목적으로 만들어진 Descriptor 이다.
- 필요한 정보를 추출하고 관계없는 정본는 버림으로써 이미지를 단순화한다.
예제
HOG 는 다음과 같이 보행자를 식별하기 위한 디스크립터입니다.
전체 코드입니다.
import os
import cv2
path = os.path.join('video', 'sample.avi')
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
cap = cv2.VideoCapture(path)
while True:
ret, frame = cap.read()
if not ret:
break
detected, _ = hog.detectMultiScale(frame)
for (x, y, w, h) in detected:
cv2.rectangle(frame, (x, y, w, h), (0, 255, 0), 3)
cv2.imshow('Detect', frame)
if cv2.waitKey(10) == 27:
break
cv2.destroyAllWindows()
cv.VideoCapture 를 이용하여 video 를 읽어 각 프레임에 대해 검출을 수행합니다.
cap = cv2.VideoCapture(path)
while True:
ret, frame = cap.read()
한 이미지에 대해 검출된 n x (x, y, w, h)
detected, _ = hog.detectMultiScale(frame)
cv2.HOGDescriptor_getDefaultPeopleDetector() -> retval
- retval: pretrained 된 feature vectors
cv2.HOGDescriptor.setSVMDetector(svmdetector) -> None
- svmdetector: SVM 의 input data
cv2.HOGDescriptor.detectMultiScale(img, hitThreshold=None, winStride=None, padding=None, scale=None, finalThreshold=None, useMeanshiftGrouping=None) -> rects, weights
- img: 입력 이미지
- scale: 검색 윈도우 크기 확대 비율(default=1.05)
- rects: 검출된 결과 영역 좌표들 (n x (x, y, w, h))
- weights: 검출된 결과 계수 n x 1
테스트
하나의 이미지에 대해 테스트를 해보았는데요.
import os
import numpy as np
import cv2
import pyautogui
walk_img = cv2.imread(os.path.join('hog_img', 'walk2.jpg'))
stop_img = cv2.imread(os.path.join('hog_img', 'stop2.jpg'))
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
w_detected, _ = hog.detectMultiScale(walk_img)
s_detected, _ = hog.detectMultiScale(stop_img)
for (x, y, w, h) in w_detected:
cv2.rectangle(walk_img, (x, y, w, h), (0, 255, 0), 3)
for (x, y, w, h) in s_detected:
cv2.rectangle(stop_img, (x, y, w, h), (0, 255, 0), 3)
cv2.imshow('walk_detect', walk_img)
cv2.imshow('stop_detect', stop_img)
cv2.waitKey()
cv2.destroyAllWindows()
손 동작, 발 동작을 많이 볼까 했었는데요.
결과를 보면 전신이 보이면 검출할 확률이 높은 것 같습니다.
'OpenCV' 카테고리의 다른 글
리얼 페이스북 (0) | 2020.08.07 |
---|---|
파이썬 OpenCV 하르 분류기(Haar Cascade Classifier) : 얼굴 검출하기 (0) | 2020.08.06 |
파이썬 OpenCV 템플릿 매칭 -3 : 크롬 공룡게임 간단 매크로 구현 (0) | 2020.08.06 |
파이썬 OpenCV 템플릿 매칭 -2 : 크롬 공룡게임 실시간 매칭하기 (2) | 2020.08.06 |
파이썬 OpenCV 템플릿 매칭 -1 : 크롬 공룡게임 (0) | 2020.08.06 |