driver-paddy / app.py
Testys's picture
Update app.py
6eb3122 verified
# 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()