File size: 1,768 Bytes
8436d4e
a854c90
8436d4e
a854c90
 
 
8436d4e
c6e2bac
 
 
 
8436d4e
c6e2bac
8436d4e
c6e2bac
8436d4e
 
c6e2bac
8436d4e
c6e2bac
a854c90
 
 
 
 
8436d4e
 
a854c90
8436d4e
a854c90
8436d4e
 
 
 
 
 
c6e2bac
8436d4e
a854c90
8436d4e
 
 
a854c90
8436d4e
 
 
a854c90
8436d4e
 
a854c90
8436d4e
a854c90
3904468
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import cv2
import streamlit as st
from PIL import Image

def load_cascade():
    # Specify the path to the Haar Cascade XML file
    cascade_path = 'haarcascade_frontalface_default.xml'

    # Check if the Haar Cascade file exists
    if not os.path.exists(cascade_path):
        raise Exception(f"Haar Cascade file not found at {cascade_path}. Please upload the file.")
    
    # Load the Haar Cascade classifier
    face_cascade = cv2.CascadeClassifier(cascade_path)
    
    # Check if the file was successfully loaded
    if face_cascade.empty():
        raise Exception(f"Failed to load Haar Cascade file from {cascade_path}.")
    
    return face_cascade

def main():
    st.title("Face Detection App")

    # Load Haar Cascade for face detection
    face_cascade = load_cascade()

    uploaded_file = st.file_uploader("Upload an Image", type=["jpg", "png", "jpeg"])

    if uploaded_file is not None:
        # Read the image file
        image = Image.open(uploaded_file)
        image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        
        # Detect faces in the image
        faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

        # Draw rectangles around faces
        for (x, y, w, h) in faces:
            cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

        # Convert image back to RGB and display it
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        st.image(image, caption="Processed Image", use_column_width=True)

        if len(faces) > 0:
            st.success("Face detection successful!")
        else:
            st.warning("No faces detected.")

if __name__ == "__main__":
    main()