def find_text_in_frame(current_img, baseimgs, modelfile='webapp/model.pickle',proba_threshold = 0.5, debug=False): blobs = [] for baseimg in baseimgs: for (xmin,ymin), blob in img_proc_utils.extract_blobs(current_img-baseimg, img_proc_pipeline = img_proc_utils.pipeline_otsu): proba = model.predict_proba(blob, model=modelfile) if proba >= proba_threshold or debug: blobs.append({'blob': blob, 'left_corner': [xmin,ymin], 'proba': proba}) if len(blobs) > 0 and not debug: return blobs return blobs
def stream_frames2(stream, pafy_video = None): base_frame_sec = -1 base_frame = None test = (pafy_video == None) # stream = '/windows/mit/rubakov.mp4' # testing if base_frame < 0: if pafy_video: yield 'event: onstart\ndata: %s\n\n' % json.dumps({'video_length': pafy_video.length, 'video_title': pafy_video.title, # 'video_desc': pafy_video.description, 'video_author': pafy_video.author}) else: yield 'event: onstart\ndata: %s\n\n' % json.dumps({'video_length': 5000}) try: for sec, frame in utils.get_frames_from_stream(stream,5): if int(sec % 20) == 0: yield 'event: onprogress\ndata: %s\n\n' % json.dumps({'sec': int(sec)}) if base_frame_sec < 0: base_frame = frame base_frame_sec = sec continue if test: has_blob = False for (xmin,ymin), blob in img_proc_utils.extract_blobs(frame-base_frame, img_proc_pipeline = img_proc_utils.pipeline2): proba = model.predict_proba(blob, model='webapp/model.pickle') if proba > 0.5: has_blob = True print sec, xmin, ymin,proba yield 'data: %s\n\n' % json.dumps({'img': utils.img_to_base64_bytes(blob), #utils.img_to_base64_bytes(255-np.nan_to_num(abs(blob))), 'sec': int(sec), 'proba': proba, 'left_corner': [xmin,ymin], 'size': blob.shape, 'frame': utils.img_to_base64_bytes(frame) }) base_frame = frame base_frame_sec = sec if test and has_blob: time.sleep(3) except StopIteration: print 'onend!' yield 'event: onend\ndata: end\n\n' raise StopIteration