Example #1
0
 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
Example #2
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
Example #3
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
Example #4
0
 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
Example #5
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")
Example #6
0
    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
Example #7
0
    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
Example #8
0
 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))