Çoğu durumda yüz tanıma, gözlerin, burnun ve ağzın konumu ve boyutu gibi yüzün özellik noktalarını ve bu özellikler arasındaki göreceli ilişkiyi analiz ederek bir yüzün ve ilgili kişisel kimliğin doğrulanmasını tamamlayabilir.
Elbette bu doğrulama süreci, özellik noktası çıkarma, örüntü tanıma, makine öğrenimi vb. gibi birçok teknolojiyi ve bilgi noktasını içerir ve bunu gerçekten yapmak da çok karmaşıktır.
Bugün bu kadar karmaşık işler yapmayacağız, sizi sadece birkaç satır basit kodla yüz algılama sürecini deneyimlemeye götüreceğiz.
Bugün yüzleri hızlı bir şekilde tespit etmek için OpenCV'yi kullanmaya başlayacağız.
1. Hazırlanın
Bir sonraki adımın yüz kimlik doğrulaması yapmak değil, yüz çerçeve tespiti yapmak olduğunu belirtelim.
Kod geliştirme ortamı python'dur.
Acemi olsanız bile aşağıdaki yöntemi takip ederek kolayca çoğaltabilirsiniz, eğer ilgileniyorsanız deneyin.
İnternetten indirdiğim bir resim gibi, tanımak istediğiniz yüzün bir resmini hazırlayın.
2. Kod
OpenCV kütüphanesini kullanarak yüz tanımayı uygulamak çok basittir çünkü OpenCV doğrudan arayabileceğimiz ilgili arayüzleri sağlar.
Aramadan önce bir yüz algılama sınıflandırıcı dosyası (haarcascade_frontalface_default.xml) indirmeniz gerekir.
Gerçek dövüşün tamamının detaylı kodu aşağıdaki gibidir, detaylı olarak okuyabilmeniz için her adıma açıklamalar ekledim.
import cv2
# OpenCV kütüphanesini içe aktar # Yüz algılama sınıflandırıcısı için yerel dosya yolu
local_file_path = ". /haarcascade_frontalface_default.xml"
# Yüz algılama sınıflandırıcısını yükleyin
#CascadeClassifier, eğitilmiş Haar özellik sınıflandırıcısını yüklemek için kullanılan sınıftır.
face_cascade = cv2.CascadeClassifier(local_file_path)
# Görüntüyü okuyun
#'face.jpeg' yüz algılama için kullanılacak görüntü dosyasının yoludur
img = cv2.imread(". /face.jpg")
# renkli görüntüyü gri ölçeğe dönüştürün
# gri ölçekli görüntü hesaplama karmaşıklığını azaltır ve algılama verimliliğini artırır
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Yüz algılama için bir sınıflandırıcı kullanın
#detectMultiScale işlevi bir görüntüdeki birden fazla yüzü algılayabilir
#parameters scaleFactor, minNeighbors, minSize algılama doğruluğunu ve sonuçlarını kontrol etmek için kullanılır
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1,
minNeighbors=5, minSize=(30, 30))
# Orijinal görüntünün üzerine yüz çerçevesini çizin
for x, y, w, h in faces: # tespit edilen yüzleri işaretlemek için dikdörtgen kullanın
#cv2.rectangle görüntü üzerine dikdörtgen çizmek için
#(255, 0, 0) kutunun rengi (mavi), 2 kutunun kalınlığı
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
# İşlenen görüntünün depolandığı yol
processed_img = ". /processed_image.jpg"
# İşlenmiş görüntüyü kaydedin
cv2.imwrite(processed_img, img)
print("succ dump processed img to:", processed_img)Aynı zamanda işlenen görüntü yerel olarak kaydedilir ve processed_image.jpg olarak adlandırılır.Tanınan görüntü aşağıdaki gibidir: