import os import cv2 import dlib import numpy as np import tensorflow as tf import mediapipe as mp from flask import Flask, render_template, Response # Initialize Flask App app = Flask(__name__) # Load Face Detector (Dlib) detector = dlib.get_frontal_face_detector() # Load Pretrained Model for Skin Analysis (Placeholder) model_path = "skin_model.h5" if os.path.exists(model_path): skin_model = tf.keras.models.load_model(model_path) else: skin_model = None # OpenCV Video Capture cap = cv2.VideoCapture(0) # Function to Analyze Skin def analyze_skin(frame): gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = detector(gray) for face in faces: x, y, w, h = face.left(), face.top(), face.width(), face.height() face_crop = frame[y:y+h, x:x+w] if skin_model: face_crop = cv2.resize(face_crop, (224, 224)) / 255.0 prediction = skin_model.predict(np.expand_dims(face_crop, axis=0)) return f"Skin Condition Score: {prediction[0][0]:.2f}" return "No face detected" # Video Stream Function def generate_frames(): while True: success, frame = cap.read() if not success: break else: skin_result = analyze_skin(frame) cv2.putText(frame, skin_result, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2) ret, buffer = cv2.imencode('.jpg', frame) frame = buffer.tobytes() yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n') @app.route('/') def index(): return render_template('index.html') @app.route('/video_feed') def video_feed(): return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame') if __name__ == "__main__": app.run(debug=True)