Spaces:
Build error
Build error
| 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') | |
| def index(): | |
| return render_template('index.html') | |
| def video_feed(): | |
| return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame') | |
| if __name__ == "__main__": | |
| app.run(debug=True) | |