1 #!/usr/bin/env python 2 3 import numpy as np 4 import cv2 5 6 # built-in modules 7 import sys 8 from time import clock 9 10 # local modules 11 import video 12 13 if __name__ == '__main__': 14 15 hsv_map = np.zeros((180, 256, 3), np.uint8) 16 h, s = np.indices(hsv_map.shape[:2]) 17 hsv_map[:,:,0] = h 18 hsv_map[:,:,1] = s 19 hsv_map[:,:,2] = 255 20 hsv_map = cv2.cvtColor(hsv_map, cv2.COLOR_HSV2BGR) 21 cv2.imshow('hsv_map', hsv_map) 22 23 cv2.namedWindow('hist', 0) 24 hist_scale = 10 25 def set_scale(val): 26 global hist_scale 27 hist_scale = val 28 cv2.createTrackbar('scale', 'hist', hist_scale, 32, set_scale) 29 30 try: 31 fn = sys.argv[1] 32 except: 33 fn = 0 34 cam = video.create_capture(fn, fallback='synth:bg=../data/baboon.jpg:class=chess:noise=0.05') 35 36 while True: 37 flag, frame = cam.read() 38 cv2.imshow('camera', frame) 39 40 small = cv2.pyrDown(frame) 41 42 hsv = cv2.cvtColor(small, cv2.COLOR_BGR2HSV) 43 dark = hsv[...,2] < 32 44 hsv[dark] = 0 45 h = cv2.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] ) 46 47 48 h = np.clip(h*0.005*hist_scale, 0, 1) 49 vis = hsv_map*h[:,:,np.newaxis] / 255.0 50 cv2.imshow('hist', vis) 51 52 ch = 0xFF & cv2.waitKey(1) 53 if ch == 27: 54 break 55 cv2.destroyAllWindows() 56