Facemesh / app.py
CHEONMA010's picture
Update app.py
ea2dacc verified
import streamlit as st
import cv2
import mediapipe as mp
import numpy as np
from PIL import Image
# MediaPipe setup
mp_face_mesh = mp.solutions.face_mesh
mp_drawing = mp.solutions.drawing_utils
grid_color = (0, 255, 0) # Green color
drawing_spec = mp_drawing.DrawingSpec(color=grid_color, thickness=1, circle_radius=1)
st.title("MediaPipe Face Mesh Detection")
# Upload image
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
# Read the image file
image = Image.open(uploaded_file).convert("RGB")
image = np.array(image)
# Convert RGB to BGR for MediaPipe
image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
# Initialize MediaPipe FaceMesh
with mp_face_mesh.FaceMesh(min_detection_confidence=0.5, min_tracking_confidence=0.5) as face_mesh:
results = face_mesh.process(image_bgr)
# Draw landmarks
if results.multi_face_landmarks:
for face_landmarks in results.multi_face_landmarks:
mp_drawing.draw_landmarks(
image=image_bgr,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_TESSELATION,
landmark_drawing_spec=drawing_spec,
connection_drawing_spec=drawing_spec,
)
# Convert the image back to RGB for display in Streamlit
image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)
st.image(image_rgb, channels="RGB", caption="Processed Image")