mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
54 lines
1.3 KiB
import sys |
|
from cv import * |
|
|
|
def inside(r, q): |
|
(rx, ry), (rw, rh) = r |
|
(qx, qy), (qw, qh) = q |
|
return rx > qx and ry > qy and rx + rw < qx + qw and ry + rh < qy + qh |
|
|
|
try: |
|
img = LoadImage(sys.argv[1]) |
|
except: |
|
try: |
|
f = open(sys.argv[1], "rt") |
|
except: |
|
print "cannot read " + sys.argv[1] |
|
sys.exit(-1) |
|
imglist = list(f.readlines()) |
|
else: |
|
imglist = [sys.argv[1]] |
|
|
|
NamedWindow("people detection demo", 1) |
|
storage = CreateMemStorage(0) |
|
|
|
for name in imglist: |
|
n = name.strip() |
|
print n |
|
try: |
|
img = LoadImage(n) |
|
except: |
|
continue |
|
|
|
#ClearMemStorage(storage) |
|
found = list(HOGDetectMultiScale(img, storage, win_stride=(8,8), |
|
padding=(32,32), scale=1.05, group_threshold=2)) |
|
found_filtered = [] |
|
for r in found: |
|
insidef = False |
|
for q in found: |
|
if inside(r, q): |
|
insidef = True |
|
break |
|
if not insidef: |
|
found_filtered.append(r) |
|
for r in found_filtered: |
|
(rx, ry), (rw, rh) = r |
|
tl = (rx + int(rw*0.1), ry + int(rh*0.07)) |
|
br = (rx + int(rw*0.9), ry + int(rh*0.87)) |
|
Rectangle(img, tl, br, (0, 255, 0), 3) |
|
|
|
ShowImage("people detection demo", img) |
|
c = WaitKey(0) |
|
if c == ord('q'): |
|
break |
|
cv.DestroyAllWindows()
|
|
|