Spaces:
Sleeping
Sleeping
fidantokac
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -1,31 +1,44 @@
|
|
1 |
import cv2
|
2 |
import gradio as gr
|
3 |
|
4 |
-
# Yüz tespiti için önceden eğitilmiş bir model
|
5 |
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
|
6 |
|
7 |
def detect_faces(img):
|
8 |
|
9 |
-
if img is None: # Eğer img None ise, None döndür
|
10 |
return None
|
11 |
|
12 |
-
|
13 |
height, width, _ = img.shape
|
14 |
if height > 750 or width > 750:
|
15 |
img = cv2.resize(img, (750, 750))
|
16 |
|
17 |
-
#
|
|
|
18 |
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
19 |
|
20 |
-
#
|
|
|
|
|
|
|
21 |
faces = face_cascade.detectMultiScale(gray, 1.3, 7)
|
22 |
|
|
|
|
|
23 |
count = 0
|
|
|
24 |
for (x, y, w, h) in faces:
|
|
|
25 |
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
|
26 |
count += 1
|
27 |
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
29 |
return img
|
30 |
|
31 |
# Gradio arayüzünü oluştur
|
|
|
1 |
import cv2
|
2 |
import gradio as gr
|
3 |
|
4 |
+
# Yüz tespiti için önceden eğitilmiş bir model. xml dosyası olarak indirilip proje dosyasına atılmalıç
|
5 |
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
|
6 |
|
7 |
def detect_faces(img):
|
8 |
|
9 |
+
if img is None: # Clear butonuna bastığında output alanında error vermesin diye. Eğer img None ise, None döndür
|
10 |
return None
|
11 |
|
12 |
+
#Resmi istenen boyuta küçültme(Çok büyük boyutlu resimlerle değil daha küçük boyutla çalışmak istedim)
|
13 |
height, width, _ = img.shape
|
14 |
if height > 750 or width > 750:
|
15 |
img = cv2.resize(img, (750, 750))
|
16 |
|
17 |
+
#Görüntüyü gri tonlamaya çevir
|
18 |
+
#Yüz tespiti algoritmaları genellikle gri tonlamalı görüntülerde daha iyi çalışır.
|
19 |
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
20 |
|
21 |
+
# 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.
|
22 |
+
#detectMultiScale: Görüntüdeki yüzleri tespit etmek için kullanılır
|
23 |
+
#1.3=> scaleFactor parametresi her ölçeklendirme adımında görüntünün ne kadar küçültüleceğini belirtir.
|
24 |
+
#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
|
25 |
faces = face_cascade.detectMultiScale(gray, 1.3, 7)
|
26 |
|
27 |
+
#!detectMultiScale metodu, her tespit edilen yüz için bir dikdörtgen koordinatı (x, y, w, h) döndürür.
|
28 |
+
|
29 |
count = 0
|
30 |
+
|
31 |
for (x, y, w, h) in faces:
|
32 |
+
#Bulduğu yüzlere bir dikdörtgen çizer
|
33 |
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
|
34 |
count += 1
|
35 |
|
36 |
+
#Metin, görüntünün solundan 100 piksel sağa ve üstten 700 piksel aşağıya yazılacaktır
|
37 |
+
#cv2.FONT_HERSHEY_SIMPLEX=> Kullanılacak font tipi.
|
38 |
+
#1=> Font boyutunu belirtir.
|
39 |
+
#(255, 0, 0)=> Metnin rengi kırmızı renk belirtilmiştir.
|
40 |
+
#2=> Metnin kalınlığı.
|
41 |
+
cv2.putText(img, f"** {count} people were detect in the photo.", (100, 700), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0) ), 2)
|
42 |
return img
|
43 |
|
44 |
# Gradio arayüzünü oluştur
|