def checkCrossLastTwo(self, ROI, ROI_W, ROI_H): if len(self.locationHistory) >= 2 and self.timeInvisible == 0: pt0 = self.locationHistory[-2] pt1 = self.locationHistory[-1] return tools.cross(ROI, ROI_W, ROI_H, pt0, pt1) else: return 0
def checkCross(self, ROI, ROI_W, ROI_H): if len(self.locationHistory) >= 2: pt0 = self.locationHistory[0] pt1 = self.locationHistory[-1] return tools.cross(ROI, ROI_W, ROI_H, pt0, pt1) else: return 0
get_mse_v(gamma_par(params, lamb), v, params, c), get_mse_v(gamma_cross(params, lamb), v, params, c), get_mse_v(gamma_ols(params), v, params, c)]) # Loop over simulations for n in [250, 2500]: for _ in range(5000): # Simulate training data data = simulate(n, d, pars, noise_W=np.sqrt(s2), noise_Z=np.sqrt(s2)) X, Y, A, W, Z = data['X'], data['Y'], data['A'], data['W'], data['Z'] # Compute estimators from training data gammas = { 'ar': ar(X, Y, A, lamb=lamb), "par": ar(X, Y, W, lamb=lamb), "cross": cross(X, Y, W, Z, lamb=lamb), "ols": ols(X, Y)} # Simulate test data from intervention do(A:=v) test_data = simulate(n, d, pars, noise_W=np.sqrt(s2), noise_Z=np.sqrt(s2), v=v) # Append results results.append([n, x] + [get_mse(test_data, gamma) for gamma in gammas.values()]) # Store data in dataframe df = pd.DataFrame(np.array(results), columns=["n", "x"] + list(gammas.keys())) df = df.melt(["x", "n"], var_name="method") # Encode population values as "theo" instead of 10e9 (Panda handles, but numpy didnt) df['n'] = df['n'].replace(theo, "theo")
def run(self, as_script=True): if self.invisible: cv2.namedWindow("Control") prev_gray = None prev_points = None while True: ret, frame = self.cam.read() if not ret: break fg_mask = self.operator.apply(frame) fg_mask = ((fg_mask == 255) * 255).astype(np.uint8) fg_mask = morph_openclose(fg_mask) frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) if prev_gray is not None and prev_points is not None: p0 = np.float32([point for point in prev_points]).reshape(-1, 1, 2) if drawing.draw_prev_points(frame, prev_points): # p1, st, err = cv2.calcOpticalFlowPyrLK(prev_gray, frame_gray, p0, None, **lk_params) frame_gray[fg_mask == 0] = 255 p1, st, err = cv2.calcOpticalFlowPyrLK(prev_gray, frame_gray, p0, None, **lk_params) for p_i, p_f in zip(p0.reshape(-1, 2), p1.reshape(-1, 2)): result = cross(ROI, ROI_W, ROI_H, p_i, p_f) if result is 1: self.arrivals += 1 if not self.quiet: print("Arrival") elif result is -1: self.departures += 1 if not self.quiet: print("Departure") if self.drawTracks: drawing.draw_line(frame, tuple(p_i), tuple(p_f)) prev_gray = frame_gray contours, hier = drawing.draw_contours(frame, fg_mask) areas, prev_points = drawing.draw_min_ellipse(contours, frame, MIN_AREA, MAX_AREA) self.areas += areas self.frame_idx += 1 if not self.invisible: self.draw_overlays(frame, fg_mask) cv2.imshow("Fas", frame_gray) cv2.imshow('Tracking', frame) cv2.imshow("Mask", fg_mask) delay = 33 else: delay = 1 if handle_keys(delay) == 1: break # Should we continue running or yield some information about the current frame if as_script: continue else: pass return self.areas
def run(self, as_script=True): if self.invisible: cv2.namedWindow("Control") prev_gray = None prev_points = None while True: ret, frame = self.cam.read() if not ret: break fg_mask = self.operator.apply(frame) fg_mask = ((fg_mask == 255) * 255).astype(np.uint8) fg_mask = morph_openclose(fg_mask) frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) if prev_gray is not None and prev_points is not None: p0 = np.float32([point for point in prev_points]).reshape(-1, 1, 2) if drawing.draw_prev_points(frame, prev_points): # p1, st, err = cv2.calcOpticalFlowPyrLK(prev_gray, frame_gray, p0, None, **lk_params) frame_gray[fg_mask == 0] = 255 p1, st, err = cv2.calcOpticalFlowPyrLK( prev_gray, frame_gray, p0, None, **lk_params) for p_i, p_f in zip(p0.reshape(-1, 2), p1.reshape(-1, 2)): result = cross(ROI, ROI_W, ROI_H, p_i, p_f) if result is 1: self.arrivals += 1 if not self.quiet: print("Arrival") elif result is -1: self.departures += 1 if not self.quiet: print("Departure") if self.drawTracks: drawing.draw_line(frame, tuple(p_i), tuple(p_f)) prev_gray = frame_gray contours, hier = drawing.draw_contours(frame, fg_mask) areas, prev_points = drawing.draw_min_ellipse( contours, frame, MIN_AREA, MAX_AREA) self.areas += areas self.frame_idx += 1 if not self.invisible: self.draw_overlays(frame, fg_mask) cv2.imshow("Fas", frame_gray) cv2.imshow('Tracking', frame) cv2.imshow("Mask", fg_mask) delay = 33 else: delay = 1 if handle_keys(delay) == 1: break # Should we continue running or yield some information about the current frame if as_script: continue else: pass return self.areas
def is_refl(a, b, c): return is_near(poly[b]['pt'], poly[c]['pt']) \ or (not ld(poly[a]['pt'], poly[b]['pt'], poly[c]['pt']) < 1e-2 \ and cross(poly[a]['pt'], poly[b]['pt'], poly[c]['pt']) < 0)
# The experiment regards considers a larger variance in proxy of A1 than in A2. noise = np.diag([1 for i in cA1] + [3 for i in cA2]) # 1) Simulate n = 10000 out = None # Loop repeats experiment 1000 times for _ in tqdm(range(1000)): # Simulate data data = simulate(n, d, pars, noise_W=noise) X, Y, A, W, Z = data['X'], data['Y'], data['A'], data['W'], data['Z'] # Fit estimators par5 = ar(X, Y, W, lamb=5) cross5 = cross(X, Y, W, Z, lamb=5) ar5 = ar(X, Y, A, lamb=5) # Cast to dataframe df = pd.DataFrame(cb(par5, cross5, ar5), columns=["par5", "cross5", "ar5"]) # 'Causal' encodes for whether predictor is causal. df['Causal'] = 3 * [1] + 3 * [0] # 'X.coord' encodes variable number (e.g. X_1, X_2, X_3, ...) df['X.coord'] = np.arange(1, 7) # Melt dataframe df = df.melt(id_vars=["Causal", "X.coord"], var_name="Method", value_name="Weight") # Add results from this simulation to overall results out = df if out is None else pd.concat((out, df))