示例#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()
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"
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();
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();	
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()
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"
def perform_localization(vidreader,roi_mask,smoothner,fgMasks,bgMasks,gtMasks,
							num_blocks=10,skip_frames = 0,last_frame=1000):
	confusion = getNewConfusion();
	start = time.time();	frameNewMasks = []; 
	frame_idx = skip_frames + 2*num_blocks;  N = min(vidreader.frames,last_frame);
	status = 'Localizing Video ' + vidreader.foldername  +' ... {0}\r'
	out_dir=os.path.dirname(vidreader.foldername)+os.sep+'output'+os.sep
	create_folder_structure_if_not_exists(out_dir);
	while(frame_idx +num_blocks  < N):
		print status.format((str(frame_idx*100/N)+'%')),
		(num_frames,frames) = vidreader.read(frame_idx-2*num_blocks,2*num_blocks);
		if num_frames > num_blocks:
			start_idx = num_blocks/2; end_idx = min(3*num_blocks/2,num_frames);
			s = frame_idx-2*num_blocks-skip_frames; e = s + num_frames;
			newMasks = smoothner.process(frames,fgMasks[s:e],bgMasks[s:e],range(start_idx,end_idx));
			#newMasks = __morphologicalOps__(newMasks);
			groundTruthMasks = gtMasks[s+num_blocks/2:s+num_blocks/2+newMasks.__len__()];	
			_frames = frames[num_blocks/2:num_blocks/2+newMasks.__len__()];
			tmp_idx= 0;
			for (gt,my) in zip(groundTruthMasks,newMasks):
				zero = np.zeros(gt.shape[:2],dtype=np.uint8)
				my_mask = np.uint8(np.dstack((zero,zero,my*255)))
				out = cv2.addWeighted(_frames[tmp_idx],0.6,my_mask,0.4,0);
				path = out_dir+os.sep+'sal_'+str(frame_idx-2*num_blocks-skip_frames+tmp_idx)+'.png'
				cv2.imwrite(path,out)
				gt_mask = np.uint8(np.dstack((zero,zero,gt*255)));
				out = cv2.addWeighted(_frames[tmp_idx],0.6,gt_mask,0.4,0);
				path = out_dir+os.sep+'gt_'+str(frame_idx-2*num_blocks-skip_frames+tmp_idx)+'.png'
				cv2.imwrite(path,out)
				frame_confusion=comparator(gt,my,roi_mask);
				updateConfusion(confusion,frame_confusion);
				tmp_idx += 1
			
		frame_idx += num_blocks
	time_taken = time.time()-start;	
	print status.format('[Done] in '),time_taken," seconds"
	return confusion;
def open_write_header(extract_path):
	create_folder_structure_if_not_exists(extract_path);
	_file = open(extract_path,'w');
	return _file;
示例#9
0
def open_write_header(extract_path):
    create_folder_structure_if_not_exists(extract_path)
    _file = open(extract_path, 'w')
    return _file