Python cv2.OPTFLOW_FARNEBACK_GAUSSIAN Examples
The following are 2
code examples of cv2.OPTFLOW_FARNEBACK_GAUSSIAN().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cv2
, or try the search function
.
Example #1
Source File: tracking_engine.py From DetectAndTrack with Apache License 2.0 | 6 votes |
def run_farneback(frames): try: return cv2.calcOpticalFlowFarneback( frames[0], frames[1], # options, defaults None, # output 0.5, # pyr_scale, 0.5 10, # levels, 3 min(frames[0].shape[:2]) // 5, # winsize, 15 10, # iterations, 3 7, # poly_n, 5 1.5, # poly_sigma, 1.2 cv2.OPTFLOW_FARNEBACK_GAUSSIAN, # flags, 0 ) except cv2.error: return None
Example #2
Source File: video_avi_flow.py From self-supervision with BSD 3-Clause "New" or "Revised" License | 4 votes |
def extract_optical_flow(fn, times, frames=8, scale_factor=1.0): cap = cv2.VideoCapture(fn) if not cap.isOpened(): return [] n_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT) outputs = [] if n_frames < frames * 2: return outputs def resize(im): if scale_factor != 1.0: new_size = (int(im.shape[1] * scale_factor), int(im.shape[0] * scale_factor)) return cv2.resize(im, new_size, interpolation=cv2.INTER_LINEAR) else: return im for t in times: cap.set(cv2.CAP_PROP_POS_FRAMES, min(t * n_frames, n_frames - 1 - frames)) ret, frame0 = cap.read() im0 = resize(cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)) mags = [] middle_frame = frame0 flows = [] for f in range(frames - 1): ret, frame1 = cap.read() if f == frames // 2: middle_frame = frame1 im1 = resize(cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)) flow = cv2.calcOpticalFlowFarneback(im0, im1, None, 0.5, # py_scale 8, # levels int(40 * scale_factor), # winsize 10, # iterations 5, # poly_n 1.1, # poly_sigma cv2.OPTFLOW_FARNEBACK_GAUSSIAN) #mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) #mags.append(mag) flows.append(flow) im0 = im1 flow = (np.mean(flows, 0) / 100).clip(-1, 1) #flow = np.mean(flows, 0) #flow /= (flow.mean() * 5 + 1e-5) #flow = flow.clip(-1, 1) #flows = flows / (np.mean(flows, 0, keepdims=True) + 1e-5) x = middle_frame[..., ::-1].astype(np.float32) / 255 outputs.append((x, flow)) return outputs