-- Smile Frames (optional for detailed analysis) CREATE TABLE smile_frames ( id UUID PRIMARY KEY, session_id UUID REFERENCES smile_sessions(id), timestamp_offset_ms INT, score DECIMAL(3,2), symmetry DECIMAL(3,2), intensity DECIMAL(3,2), eye_squint BOOLEAN -- Duchenne marker );
def calculate_smile_score(face_landmarks, image_shape): # Key landmarks: # Lip corners: 61 (left), 291 (right), 13 (upper lip), 14 (lower lip) left_mouth = face_landmarks.landmark[61] right_mouth = face_landmarks.landmark[291] upper_lip = face_landmarks.landmark[13] lower_lip = face_landmarks.landmark[14] eve smile
-- User streaks CREATE TABLE streaks ( user_id UUID PRIMARY KEY, current_streak_days INT, longest_streak_days INT, last_smile_date DATE ); 5.1 Smile Detection Pipeline (On-Device for privacy/speed) # Pseudo-code using MediaPipe Face Mesh import mediapipe as mp import cv2 import numpy as np mp_face_mesh = mp.solutions.face_mesh face_mesh = mp_face_mesh.FaceMesh(static_image_mode=False, min_detection_confidence=0.5) -- Smile Frames (optional for detailed analysis) CREATE
# Duchenne marker (eye squint) left_eye_open = eye_aspect_ratio(face_landmarks, is_left=True) right_eye_open = eye_aspect_ratio(face_landmarks, is_left=False) duchenne = 1 if (left_eye_open < 0.25 and right_eye_open < 0.25) else 0 session_id UUID REFERENCES smile_sessions(id)