Created
May 9, 2017 16:11
-
-
Save bigsnarfdude/52f96f1cf345492e93d3f520a09e67a0 to your computer and use it in GitHub Desktop.
[pedestrianDetection] HOG to SVM with autoscaler in OpenCV python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from __future__ import print_function | |
from imutils.object_detection import non_max_suppression | |
from imutils import paths | |
import numpy as np | |
import imutils | |
import argparse | |
import cv2 | |
ap = argparse.ArgumentParser() | |
ap.add_argument('-i', "--images", required=True, help="path to images directory") | |
args = vars(ap.parse_args()) | |
# initialize the HOG descriptor (person detector) | |
hog = cv2.HOGDescriptor() | |
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) | |
#loop over the image paths | |
for imagePath in paths.list_images(args["images"]): | |
# load the image and resize it to reduce detection time and improve accrcy | |
image = cv2.imread(imagePath) | |
image = imutils.resize(image, width=min(400, image.shape[1])) | |
orig = image.copy() | |
#detect people | |
(rects, weights) = hog.detectMultiScale(image, winStride=(4,4), | |
padding=(8,8),scale=1.05) | |
#draw the original bounding boxes | |
for (x, y, w, h) in rects: | |
cv2.rectangle(orig,(x,y),(x + w, y + h), (0,0,255), 2) | |
#apply non-maxima suppresssion to the bounding boxes using | |
#pretty large overlap threshold to try to maintain overlapping people boxs | |
rects = np.array([[x,y, x + w, y + h] for (x, y, w, h) in rects]) | |
pick = non_max_suppression(rects, probs=None, overlapThresh=0.65) | |
#draw the final bounding boxes | |
for (xA, yA, xB, yB) in pick: | |
cv2.rectangle(image, (xA, yA), (xB, yB), (0,255,0),2) | |
#show some information on the number of bounding box | |
filename = imagePath[imagePath.rfind("/") + 1:] | |
print("[INFO]{}: {} original boxes, {} after suppression".format( | |
filename, len(rects), len(pick))) | |
#show the different frames | |
cv2.imshow("Before NMS",orig) | |
cv2.imshow("After NMS",image) | |
cv2.waitKey(0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment