# main.py import os import sys from gradio_interface import GradioWebRTCInterface from dotenv import load_dotenv load_dotenv() def check_opencv_installation(): """Check if OpenCV is properly installed with required cascades""" try: import cv2 # Check for required cascade files cascade_files = [ 'haarcascade_frontalface_default.xml', 'haarcascade_eye.xml', 'haarcascade_smile.xml' ] missing_cascades = [] for cascade in cascade_files: cascade_path = cv2.data.haarcascades + cascade if not os.path.exists(cascade_path): missing_cascades.append(cascade) if missing_cascades: print(f"āŒ Missing OpenCV cascade files: {missing_cascades}") print("šŸ’” Please reinstall OpenCV: pip install opencv-python") return False print("āœ… OpenCV and required cascade files found!") return True except ImportError: print("āŒ OpenCV not found. Please install: pip install opencv-python") return False def check_optional_dependencies(): """Check for optional dependencies and provide info""" optional_deps = { 'mediapipe': 'Enhanced facial landmark detection', 'google.generativeai': 'AI-powered voice alerts', 'scipy': 'Advanced mathematical computations' } available = [] missing = [] for dep, description in optional_deps.items(): try: __import__(dep) available.append(f"āœ… {dep} - {description}") except ImportError: missing.append(f"⚪ {dep} - {description}") if available: print("šŸ“¦ Available optional features:") for item in available: print(f" {item}") if missing: print("šŸ“¦ Optional features (install for enhanced functionality):") for item in missing: print(f" {item}") def main(): """Main entry point""" print("šŸš— Starting AI Driver Drowsiness Detection System...") print("šŸ”§ Using OpenCV-based detection (no external model downloads required)") if not check_opencv_installation(): sys.exit(1) check_optional_dependencies() print("\nšŸš€ All core requirements satisfied!") # Create and launch interface try: interface_manager = GradioWebRTCInterface() demo = interface_manager.create_interface() print("🌐 Launching Gradio interface...") print("šŸ“± The interface will be available in your browser") print("šŸ”— A public link will be generated for sharing") demo.launch( server_name="0.0.0.0", server_port=7860, share=True, show_error=True, enable_queue=True, max_threads=10, favicon_path=None ) except Exception as e: print(f"āŒ Error launching interface: {e}") print("šŸ’” Try running: pip install --upgrade gradio") sys.exit(1) if __name__ == "__main__": main()