def perform_tracking(vidreader,smoothMasks,num_blocks,num_prev_frames,num_objects=1): start = time.time(); tracker = tracker_instance(TrackerMethods.MIXTURE_BASED); tracker.numMixtures = num_objects; prev_rects = [np.array([vidreader.width/4,vidreader.height/4,\ vidreader.width/2,vidreader.height/2],\ dtype=np.float32) for idx in range(num_objects)]; prev_centers = [np.array([vidreader.width/2,vidreader.height/2], dtype=np.float32) for idx in range(num_objects)]; vidreader.__reset__(); N = vidreader.frames; skip_frames = num_prev_frames + num_blocks/2; frame_idx = 0; numFrames= len(smoothMasks); frame_all_window_center = []; window_size = np.zeros((num_objects,2)); while(frame_idx < numFrames): print 'Tracking ... {0}%\r'.format((frame_idx*100/N)), (cnt,frames) = vidreader.read(frame_idx+skip_frames,num_blocks); if cnt > 1: window_frames = tracker.track_object(frames,smoothMasks[frame_idx:frame_idx+cnt]); s = frame_idx; e = s + cnt; for window_frame in window_frames: all_window_center = []; for (idx,_window) in enumerate(window_frame): (window,lbl) = _window rect = np.array([window[0],window[1],window[2]-window[0],window[3]-window[1]],dtype=np.float32); cv2.accumulateWeighted(rect,prev_rects[idx],0.1,None); window_center = prev_rects[idx][:2]+(prev_rects[idx][2:]/2); cv2.accumulateWeighted(window_center,prev_centers[idx],0.3,None); window_center = prev_centers[idx].copy(); window_size[idx] = np.maximum(window_size[idx],prev_rects[idx][2:]); all_window_center.extend([window_center]); frame_all_window_center.extend([all_window_center]); frame_idx += num_blocks; time_taken = time.time()-start; print "Tracking .... [DONE] in ",time_taken," seconds" return frame_all_window_center,window_size
def perform_tracking(vidreader, smoothMasks, num_blocks, num_prev_frames, num_objects=1): start = time.time() tracker = tracker_instance(TrackerMethods.MIXTURE_BASED) tracker.numMixtures = num_objects prev_rects = [np.array([vidreader.width/4,vidreader.height/4,\ vidreader.width/2,vidreader.height/2],\ dtype=np.float32) for idx in range(num_objects)] prev_centers = [ np.array([vidreader.width / 2, vidreader.height / 2], dtype=np.float32) for idx in range(num_objects) ] vidreader.__reset__() N = vidreader.frames skip_frames = num_prev_frames + num_blocks / 2 frame_idx = 0 numFrames = len(smoothMasks) frame_all_window_center = [] window_size = np.zeros((num_objects, 2)) while (frame_idx < numFrames): print 'Tracking ... {0}%\r'.format((frame_idx * 100 / N)), (cnt, frames) = vidreader.read(frame_idx + skip_frames, num_blocks) if cnt > 1: window_frames = tracker.track_object( frames, smoothMasks[frame_idx:frame_idx + cnt]) s = frame_idx e = s + cnt for window_frame in window_frames: all_window_center = [] for (idx, _window) in enumerate(window_frame): (window, lbl) = _window rect = np.array([ window[0], window[1], window[2] - window[0], window[3] - window[1] ], dtype=np.float32) cv2.accumulateWeighted(rect, prev_rects[idx], 0.1, None) window_center = prev_rects[idx][:2] + ( prev_rects[idx][2:] / 2) cv2.accumulateWeighted(window_center, prev_centers[idx], 0.3, None) window_center = prev_centers[idx].copy() window_size[idx] = np.maximum(window_size[idx], prev_rects[idx][2:]) all_window_center.extend([window_center]) frame_all_window_center.extend([all_window_center]) frame_idx += num_blocks time_taken = time.time() - start print "Tracking .... [DONE] in ", time_taken, " seconds" return frame_all_window_center, window_size
from dnn_predict import get_instance as dnn_instance from io_module.video_reader import VideoReader from io_module.video_writer import VideoWriter; from io_module.block_reader import BlockReader from saliency import SaliencyProps,SaliencyMethods,get_instance as sal_instance from bg_sub import get_instance as bg_instance,BGMethods from tracker import get_instance as tracker_instance,TrackerMethods from smoothing import get_instance as smooth_instance,SmoothMethods from features.pixellete import allFeats as feats from features.color import GRAY from utils import normalize sal = sal_instance(SaliencyMethods.REGION_CONTRAST,SaliencyProps()) bg = bg_instance(BGMethods.FRAME_DIFFERENCING); smoothner = smooth_instance(feats,SmoothMethods.GMM_BASED); tracker = tracker_instance(TrackerMethods.MIXTURE_BASED); KERNEL = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3)); def __morphologicalOps__(mask): #_mask = binary_fill_holes(mask) _mask = cv2.medianBlur(np.uint8(mask),3) _mask = cv2.morphologyEx(_mask, cv2.MORPH_CLOSE,KERNEL) _mask = binary_fill_holes(_mask) _mask = remove_small_objects(_mask,min_size=128,connectivity=2) kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5)) _mask = cv2.dilate(np.uint8(_mask),kernel,iterations = 1) return _mask; def load_labels(fileName): idx = 0; labels ={} with open(fileName,'r') as f: