57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python
 | |
| 
 | |
| 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()
 | 
