MMESA-ZeroGPU / tabs /skin_analysis.py
vitorcalvi's picture
pre-launch
efabbbd
raw
history blame
1.1 kB
import gradio as gr
import cv2
import numpy as np
def analyze_skin_conductance(image):
img = image if isinstance(image, np.ndarray) else cv2.imread(image)
if img is None:
return "Error: Unable to process the image."
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, np.array([0, 20, 70], dtype=np.uint8), np.array([20, 150, 255], dtype=np.uint8))
sweat_percentage = (np.count_nonzero(mask) / mask.size) * 100
stress_level = "Low" if sweat_percentage < 10 else "Medium" if sweat_percentage < 30 else "High"
return f"Estimated stress/arousal level: {stress_level}\nSweat indicator percentage: {sweat_percentage:.2f}%"
def create_skin_conductance_tab():
with gr.Column():
image_input = gr.Image()
analyze_button = gr.Button("Analyze")
output = gr.Textbox(label="Analysis Results")
analyze_button.click(analyze_skin_conductance, inputs=image_input, outputs=output)
# Add the Examples component
gr.Examples(["./assets/images/fitness.jpg"], inputs=[image_input])