Spaces:
Sleeping
Sleeping
| import cv2 | |
| import gradio as gr | |
| # Yüz tespiti için önceden eğitilmiş bir model. xml dosyası olarak indirilip proje dosyasına atılmalıç | |
| face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') | |
| def detect_faces(img): | |
| if img is None: # Clear butonuna bastığında output alanında error vermesin diye. Eğer img None ise, None döndür | |
| return None | |
| #Resmi istenen boyuta küçültme(Çok büyük boyutlu resimlerle değil daha küçük boyutla çalışmak istedim) | |
| height, width, _ = img.shape | |
| if height > 750 or width > 750: | |
| img = cv2.resize(img, (750, 750)) | |
| #Görüntüyü gri tonlamaya çevir | |
| #Yüz tespiti algoritmaları genellikle gri tonlamalı görüntülerde daha iyi çalışır. | |
| gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | |
| # face_cascade: Önceden eğitilmiş bir model olup, yüzlerin genellikle bulunduğu bölgeleri (gözler, burun, ağız) temsil eden özelliklere dayanır. | |
| #detectMultiScale: Görüntüdeki yüzleri tespit etmek için kullanılır | |
| #1.3=> scaleFactor parametresi her ölçeklendirme adımında görüntünün ne kadar küçültüleceğini belirtir. | |
| #7=> minNeighbors parametresi bir yüzün geçerli olarak kabul edilmesi için, çevresindeki kaç tane komşu dikdörtgenin de nesne olarak kabul edilmesi gerektiğini belirtir | |
| faces = face_cascade.detectMultiScale(gray, 1.3, 7) | |
| #!detectMultiScale metodu, her tespit edilen yüz için bir dikdörtgen koordinatı (x, y, w, h) döndürür. | |
| count = 0 | |
| for (x, y, w, h) in faces: | |
| #Bulduğu yüzlere bir dikdörtgen çizer | |
| cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) | |
| count += 1 | |
| #Metin, görüntünün solundan 100 piksel sağa ve üstten 700 piksel aşağıya yazılacaktır | |
| #cv2.FONT_HERSHEY_SIMPLEX=> Kullanılacak font tipi. | |
| #1=> Font boyutunu belirtir. | |
| #(255, 0, 0)=> Metnin rengi kırmızı renk belirtilmiştir. | |
| #2=> Metnin kalınlığı. | |
| cv2.putText(img, f"** {count} people were detect in the photo.", (100, 700), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0) , 2) | |
| return img | |
| # Gradio arayüzünü oluştur | |
| with gr.Blocks() as demo: | |
| gr.Markdown("#Face Detect App-Basic") | |
| with gr.Row(): | |
| input_image = gr.Image(label="Upload a photo", type="numpy") | |
| output_image = gr.Image(label="Detect Area") | |
| apply_button = gr.Button("Detect") | |
| clear_button = gr.Button("Clear") | |
| input_image.change(fn=detect_faces, inputs=input_image, outputs=output_image) | |
| apply_button.click(fn=detect_faces, inputs=input_image, outputs=output_image) | |
| clear_button.click(fn=lambda: (None, None), inputs=None, outputs=[input_image, output_image]) # Fotoğrafı temizlemek için (None, None) döndür | |
| '''iface = gr.Interface( | |
| fn=detect_faces, | |
| inputs="image", | |
| outputs="image", | |
| title="Yüz Tespiti Uygulaması" | |
| )''' | |
| demo.launch() |