Spaces:
Running
Running
| """ | |
| Visual Check Renderer. | |
| Processes an image through the Janus FaceLandmarker and draws the results. | |
| """ | |
| import sys | |
| import os | |
| import cv2 | |
| import numpy as np | |
| import mediapipe as mp | |
| # Add backend to path | |
| sys.path.append(os.path.join(os.getcwd(), "backend")) | |
| def run_visual_check(image_path, output_path): | |
| print(f"--- 👁️ Running Visual Check on {os.path.basename(image_path)} ---") | |
| from app.services.mmsa_engine import mmsa_engine | |
| mmsa_engine._lazy_load() | |
| # Load Image | |
| image = cv2.imread(image_path) | |
| if image is None: | |
| print(f"Error: Could not load {image_path}") | |
| return | |
| from mediapipe.tasks.python.vision.core.image import Image | |
| mp_image = Image(image_format=mp.ImageFormat.SRGB, data=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) | |
| # Detect | |
| result = mmsa_engine.landmarker.detect(mp_image) | |
| if result.face_landmarks: | |
| print(f"✅ Success: Detected {len(result.face_landmarks[0])} landmarks.") | |
| # Draw Landmarks (Modern way) | |
| # Note: Mediapipe Tasks API doesn't have the old drawing_utils in the same way. | |
| # We'll draw dots manually for the 'check'. | |
| for landmark in result.face_landmarks[0]: | |
| x = int(landmark.x * image.shape[1]) | |
| y = int(landmark.y * image.shape[0]) | |
| cv2.circle(image, (x, y), 2, (0, 255, 0), -1) | |
| cv2.imwrite(output_path, image) | |
| print(f"Saved visualization to: {output_path}") | |
| else: | |
| print("❌ No face detected in the image.") | |
| if __name__ == "__main__": | |
| # Get the latest generated image from the artifact path | |
| input_img = "/Users/shashwat/.gemini/antigravity/brain/550dad57-1590-41e0-bed9-f1ab8c6b8ac3/visual_test_subject_1776892985215.png" | |
| output_img = "/Users/shashwat/.gemini/antigravity/brain/550dad57-1590-41e0-bed9-f1ab8c6b8ac3/video_check_result.png" | |
| run_visual_check(input_img, output_img) | |