- HOG(Histogram of Oriented Gradients) 란?
- 영상의 지역적 그래디언트 방향 정보를 특징 벡터로 사용
- 2005년 CVPR학회에서 보행자 검출 방법으로 소개되어 널리 사용되기 시작함
- 이후 다양한 객체 인식에서 활용됨
- HOG 멀티스케일 객체 검출 함수
cv2.HOGDescriptor.detectMultiScale(img , hitThreshold=None , winStride=None, padding=None,
scale=None, finalThreshold=None,useMeanshiftGrouping=None)--> foundLocations , foundWeights
• img : 입력 영상 . cv2.CV_8UC1 또는 cv2.CV_8UC3.
• hitThreshold: 특징 벡터와 SVM 분류 평면까지의 거리에 대한 임계값
• winStride: 셀 윈도우 이동 크기 . (0, 0) 지정 시 셀 크기와 같게 설정
• padding: 패딩 크기
• scale: 검색 윈도우 크기 확대 비율 . 기본값은 1.05.
• finalThreshold : 검출 결정을 위한 임계값
• useMeanshiftGrouping : 겹쳐진 검색 윈도우를 합치는 방법 지정 플래그
• foundLocations (출력) 검출된 사각형 영역 정보
• foundWeights : (출력) 검출된 사각형 영역에 대한 신뢰도
- HOG 보행자 검출 예제
import sys
import random
import numpy as np
import cv2
# 동영상 불러오기
cap = cv2.VideoCapture('vtest.avi')
if not cap.isOpened():
print('Video open failed!')
sys.exit()
# 보행자 검출을 위한 HOG 기술자 설정
hog=cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
while True:
ret,frame=cap.read()
if not ret:
break
# 매 프레임마다 보행자 검출
detected,_=hog.detectMultiScale(frame)
# 검출 결과 화면 표시
for (x,y,w,h) in detected:
c=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
cv2.rectangle(frame,(x,y,w,h),c,3)
cv2.imshow('frame',frame)
if cv2.waitKey(10)==27:
break
cv2.destroyAllWindows()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[55] 9.특징점 검출과 매칭 1) 코너 검출 (0) | 2021.03.25 |
---|---|
[54] 7) 간단 스노우앱 (0) | 2021.03.24 |
[52] 5)캐스케이드 분류기: 얼굴 검출 (0) | 2021.03.24 |
[51] 4) 템플릿 매칭 (2): 인쇄체 숫자 인식 (0) | 2021.03.24 |
[50] 3) 템플릿 매칭(1): 이해하기 (0) | 2021.03.24 |