Spaces:
Configuration error
Configuration error
| import numpy as np | |
| def pairwise_chat_flags(tracks, max_dist_px=80, min_stationary_s=10, fps=25.0): | |
| # tracks: dict id -> {'centroid':(x,y), 'history':[...]} ; returns set of ids chatting | |
| ids = list(tracks.keys()) | |
| centroids = [tracks[i]['centroid'] for i in ids] | |
| chatting_ids = set() | |
| # Stationary check: movement in last ~min_stationary_s | |
| window = max(1, int(min_stationary_s * fps * 0.5)) | |
| def is_stationary(hist): | |
| if len(hist) < window+1: return False | |
| pts = np.array(hist[-window:]) | |
| d = np.linalg.norm(pts - pts.mean(axis=0), axis=1).mean() | |
| return d < 2.5 # pixels | |
| for i in range(len(ids)): | |
| for j in range(i+1, len(ids)): | |
| c1 = np.array(centroids[i]); c2 = np.array(centroids[j]) | |
| dist = np.linalg.norm(c1 - c2) | |
| if dist <= max_dist_px and is_stationary(tracks[ids[i]]['history']) and is_stationary(tracks[ids[j]]['history']): | |
| chatting_ids.add(ids[i]); chatting_ids.add(ids[j]) | |
| return chatting_ids | |