Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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: