Esempio n. 1
0
def write_video(write_path,
                vidreader,
                smoothMasks,
                window_centers,
                window_sizes,
                num_blocks,
                num_prev_frames,
                rsz_shape=[80, 60]):
    create_folder_structure_if_not_exists(write_path)
    shape = [vidreader.width, vidreader.height]
    vidwriter = VideoWriter(write_path, vidreader.width, vidreader.height)
    vidwriter.build()
    vidreader.__reset__()
    skip_frames = num_prev_frames + num_blocks / 2
    vidreader.skip_frames(skip_frames)
    frame_idx = 0
    numFrames = len(smoothMasks)
    while (frame_idx < numFrames):
        frame = vidreader.read_next()
        if frame is None:
            break
        frame = draw_rect(frame, window_centers[frame_idx], window_sizes,
                          shape)
        name = "test_results/tracking/track{0}.png".format(frame_idx)
        cv2.imwrite(name, frame)
        vidwriter.write(np.uint8(frame))
        frame_idx += 1
    vidwriter.close()
Esempio n. 2
0
	def __init__(self,vidfile,labelfile,modelFile,labelListFile,exportPath,
							perClassFrames=40,frameRate=20,context_size=5,
							banerWidth = 80,scale = 1):
		# input properties
		self.vidreader = VideoReader(vidfile);
		self.labelreader = open(labelfile,'r');
		self.N = self.vidreader.frames;
		self.width,self.height = self.vidreader.width,self.vidreader.height;
		self.context_size=context_size;
		self.perClassFrames = perClassFrames;
		self.labels = load_labels(labelListFile);
		self.n_outs = len(self.labels);
		self.flag_colors = [];
		for index in range(self.n_outs):
			self.flag_colors.extend([tuple(np.array(cm.jet(index/float(self.n_outs))[:3][::-1])*255)])
		self.predictors,self.predictorStartIdx = load_predictors(modelFile);
		self.input_shape = [self.height,self.width,3]
		self.batch_size = self.predictors[0].batch_size
		
		#write properites
		self.banerWidth = banerWidth
		self.vidWriter = VideoWriter(exportPath,self.banerWidth+self.width,self.height,fps=frameRate);
		self.colors = np.random.randint(256, size=(len(self.labels), 3))
		self.scale = scale;
		
		#status
		self.frameIdx = 0;
		self.tasks = deque();
		self.isFinished = False;
		self.vidWriter.build();
Esempio n. 3
0
def tracker(inPath,outPath="test_results/tracker.avi"):
	#initialization for default value
	hog = cv2.HOGDescriptor()
	hog.setSVMDetector( cv2.HOGDescriptor_getDefaultPeopleDetector())
	vidreader = VideoReader(inPath)
	vidwriter = VideoWriter(outPath,vidreader.width,vidreader.height)
	vidwriter.build();
	frame_idx =0; N = vidreader.frames;
	while vidreader.num_remaining_frames() > 0:
		frame_idx += 1;
		cur_frame = vidreader.read_next();
		print 'Perform human tracking.... {0}%\r'.format((frame_idx*100/N)),
		if cur_frame is None:
			break;
		gray_cur_frame = cv2.cvtColor(cur_frame, cv2.COLOR_BGR2GRAY)
		found, w = hog.detectMultiScale(gray_cur_frame, winStride=(8,8), padding=(32,32), scale=1.05)
		found_filtered = []
		#discarding the bounding box on within other
		for ri, r in enumerate(found):
			for qi, q in enumerate(found):
				if ri != qi and inside(r, q):
					break
				else:
					found_filtered.append(r)
		draw_detections(cur_frame, found_filtered, 1)
		vidwriter.write(cur_frame);
	vidreader.close();
	vidwriter.close()
	cv2.destroyAllWindows()
	print "Implemented Human Tracking.............   [Done]"
def write_video(vidreader, out_path, num_prev_frames, num_blocks, smoothMasks,
                vaMasks):
    create_folder_structure_if_not_exists(out_path)
    start = time.time()
    vidwriter = VideoWriter(out_path, vidreader.width * 2, vidreader.height)
    vidwriter.build()
    vidreader.__reset__()
    N = vidreader.frames
    vidreader.skip_frames(num_prev_frames + num_blocks / 2)
    frame_idx = 0
    numFrames = len(smoothMasks)
    while (frame_idx < numFrames):
        print 'Writing video ... {0}%\r'.format((frame_idx * 100 / N)),
        frame = vidreader.read_next()
        zero_frame = np.zeros(frame.shape, dtype=np.uint8)
        zero_frame[:, :, 2] = vaMasks[frame_idx] * 255
        out_frame1 = cv2.addWeighted(frame, 0.6, zero_frame, 0.4, 0)
        out_frame2 = frame * smoothMasks[frame_idx][:, :, None]
        name = "test_results/smoothening/{0}_smooth.png".format(
            frame_idx + num_prev_frames + num_blocks / 2)
        cv2.imwrite(name, out_frame2)
        vidwriter.write(np.uint8(np.hstack((out_frame1, out_frame2))))
        frame_idx += 1
    vidwriter.close()
    time_taken = time.time() - start
    print "Writing video .... [DONE] in ", time_taken, " seconds"
Esempio n. 5
0
def test_bgsub_mog(inp):
    vidreader = VideoReader(inp)
    vidwriter = VideoWriter("test_results/bg_sub_mog.avi", vidreader.width,
                            vidreader.height)
    bgsub = get_instance(BGMethods.MOG_SUBSTRACTION)
    start = time.time()
    process_video(bgsub, vidreader, vidwriter)
    time_taken = time.time() - start
    print "Tested Background Subtraction (Mixture of Gaussian)...    [DONE] in " + str(
        time_taken) + " seconds"
Esempio n. 6
0
def test_bgsub_fd(inp):
    vidreader = VideoReader(inp)
    vidwriter = VideoWriter("test_results/bg_sub_fd.avi", vidreader.width,
                            vidreader.height)
    bgsub = get_instance(BGMethods.FRAME_DIFFERENCING)
    start = time.time()
    process_video(bgsub, vidreader, vidwriter, num_blocks=2)
    time_taken = time.time() - start
    print "Tested Background Subtraction (Frame Differencing)...    [DONE] in " + str(
        time_taken) + " seconds"
def createVideo(datapath,
                group,
                outfileName,
                shape,
                duration=120,
                framerate=20,
                vidLen=32):
    vidOutFileName = outfileName + 'test.avi'
    labelOutFileName = outfileName + 'test.txt'
    values = []
    create_folder_structure_if_not_exists(vidOutFileName)
    with open(datapath + os.sep + group + ".txt", 'r') as fp:
        for line in fp:
            values.extend([line.split()])
    numClass = len(values)
    numExamples = (duration * framerate) / (vidLen)
    randomNumbers = np.random.random_integers(0, numClass - 1, numExamples)
    fileWriter = open(labelOutFileName, 'w')
    vidWriter = VideoWriter(vidOutFileName, shape[0], shape[1])
    vidWriter.build()
    for idx, random_idx in enumerate(randomNumbers):
        print 'Creating UCF 50 video ... {0}%\r'.format(
            (idx * 100 / numExamples)),
        classDetails = values[random_idx]
        classPath = datapath + os.sep + classDetails[0] + os.sep
        classExamples = [
            os.path.join(classPath, _file) for _file in os.listdir(classPath)
            if os.path.isfile(os.path.join(classPath, _file))
        ]
        chosenExample = classExamples[np.random.randint(len(classExamples))]
        #print chosenExample
        vidreader = VideoReader(chosenExample, None)
        num_frames = vidreader.frames
        cnt, frames = vidreader.read(np.random.randint(num_frames - vidLen),
                                     vidLen)
        fileWriter.writelines("%d\n" % int(item)
                              for item in [classDetails[2]] * cnt)
        for frame in frames:
            vidWriter.write(frame)
    vidWriter.close()
    fileWriter.close()
Esempio n. 8
0
        rect = np.array(
            [_min[1], _min[0], _max[1] - _min[1], _max[0] - _min[0]],
            dtype=np.float32)
        cv2.accumulateWeighted(rect, prev_rect, 0.3, None)
        rect = tuple(prev_rect)
        cv2.rectangle(salProbColor, (rect[0], rect[1]),
                      (rect[0] + rect[2], rect[1] + rect[3]), (0, 0, 255))

        mask_frame = np.float32(np.dstack((zero, mask * 255, zero)))
        out_frame = cv2.addWeighted(np.float32(_frame), 0.6, mask_frame, 0.4,
                                    0.0)
        #out_frame = np.uint8( bg_es.cur_frame* mask[:,:,None])
        frame = np.hstack((salProbColor, out_frame))
        frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
        vidwriter.write(np.uint8(frame))
    vidreader.close()
    vidwriter.close()


if __name__ == "__main__":
    import sys
    if sys.argv.__len__() <= 1:
        print "input path not provided........."
    else:
        inp = sys.argv[1]
        out = "test_results/final.avi"
        vidreader = VideoReader(inp)
        vidwriter = VideoWriter(out, 2 * vidreader.width / 4,
                                vidreader.height / 4)
        process(vidreader, vidwriter)