Yüz tanıma sistemleri, güvenlikten kullanıcı deneyimine kadar birçok alanda kullanılmaktadır.
Yüz tanıma sistemleri, güvenlikten kullanıcı deneyimine kadar birçok alanda kullanılmaktadır. Bu yazıda, Python kullanarak basit bir yüz tanıma sistemi nasıl yapılır, adım adım inceleyeceğiz.
Gerekli Kütüphaneler
Bu proje için aşağıdaki Python kütüphanelerine ihtiyacımız olacak:
- OpenCV: Görüntü işleme için
- dlib: Yüz tanıma ve işaretleme için
- numpy: Matematiksel işlemler için
Bu kütüphaneleri yüklemek için şu komutları kullanabilirsiniz:
pip install opencv-python dlib numpy
Adım 1: Kütüphaneleri İçe Aktarma
İlk olarak gerekli kütüphaneleri projemize dahil edelim:
import cv2
import dlib
import numpy as np
Adım 2: Yüz Dedektörü ve Yüz İşaretleyici Yükleme
dlib kütüphanesi, önceden eğitilmiş yüz dedektörleri ve işaretleyiciler sağlar. Bunları kullanarak yüz tespit edebilir ve yüzün belirli noktalarını işaretleyebiliriz.
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
Not: shape_predictor_68_face_landmarks.dat
dosyasını buradan indirebilirsiniz.
Adım 3: Görüntü Yükleme ve Gri Tonlamaya Dönüştürme
Görüntüyü yükleyip gri tonlamaya dönüştürelim. Yüz tespiti genellikle gri tonlamalı görüntülerde daha etkilidir.
image = cv2.imread("your_image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
Adım 4: Yüz Tespiti
Gri tonlamalı görüntü üzerinde yüz tespiti yapalım:
faces = detector(gray)
Adım 5: Yüz İşaretlerini Bulma ve Çizme
Tespit edilen yüzler üzerindeki işaret noktalarını bulup, görüntü üzerinde çizelim:
for face in faces:
landmarks = predictor(gray, face)
for n in range(0, 68):
x = landmarks.part(n).x
y = landmarks.part(n).y
cv2.circle(image, (x, y), 2, (255, 0, 0), -1)
Adım 6: Sonucu Görüntüleme
Son olarak, sonuç görüntüsünü gösterelim:
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Tam Kod
Aşağıda yukarıdaki adımların bir araya getirilmiş tam kodunu bulabilirsiniz:
import cv2
import dlib
import numpy as np
# Yüz dedektörü ve işaretleyici yükleme
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
# Görüntü yükleme
image = cv2.imread("your_image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Yüz tespiti
faces = detector(gray)
# Yüz işaretlerini bulma ve çizme
for face in faces:
landmarks = predictor(gray, face)
for n in range(0, 68):
x = landmarks.part(n).x
y = landmarks.part(n).y
cv2.circle(image, (x, y), 2, (255, 0, 0), -1)
# Sonucu görüntüleme
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()