logger.debug('processing {0} frame'.format(frame_id)) len_frame = len(frames) frames = [frame] + frames[:min(2, len(frames))] if len(frames) == 3: diff = frame_diff(frames[0], frames[1], frame) val = numpy.mean(diff) data = numpy.hstack(([val], data[:min(args.n_samples, data.shape[0])])) data_avg = numpy.mean(data) data_std = numpy.std(data) data_var = numpy.abs(val-data_avg)/data_std logger.debug('data_avg: {0}, data_std: {1}, data_var: {2}, value: {3}'.format(data_avg, data_std, data_var, val)) critical = (data_var > args.offset) and (frame_id > args.n_min) if args.display: msg0 = "avg: {0}, std: {0}, var: {1}".format(data_avg, data_std, data_var) msg1 = "critical image: {0}".format(critical) cv2.imshow('input frame', Scripts.display_message(frame, msg0, msg1)) cv2.imshow('frame_diff', Scripts.display_message(diff, msg0, msg1)) if critical and not triggered: triggered = True logger.info('Significant Motion Detected on Frame {0}!'.format(frame_id)) if args.dump_images: img_path = '{0}_inputFrame.png'.format(frame_id) dif_path = '{0}_diffFrame.png'.format(frame_id) if args.dump_path: img_path = os.path.join(args.dump_path, img_path) dif_path = os.path.join(args.dump_path, dif_path) logger.debug('saving inputFrame to {0}'.format(img_path)) logger.debug('saving diffFrame to {0}'.format(dif_path)) cv2.imwrite(img_path, frame) assert os.path.exists(img_path), 'inputFrame did not save correctly' cv2.imwrite(dif_path, diff)