OpenCV ve Python İle Görüntü İşleme “Yüz Tanıma”

Merhaba, bugün sizlerle cv2 ve haarcascade kütüphanelerini kullanarak herhangi bir resimdeki yüzleri bulmaya çalışacağız.

İlk olarak önceden uzun uğraşlar sonucu yazılmış 30000 satırlık haarcascadefrontalface.xml kütüphanesini indirmemiz gerek.

Kütüphaneyi buradan indirebilirsiniz
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml

Bu kütüphaneyi indirdikten sonra proje dosyamıza ekliyoruz. Ve tabi ki aynı zamanda yüzleri bulmak istediğimiz resimleri de. Ben prison break dizisinden tanıdığım scofield’in yüz resmini indirdim ve proje dosyama attım

Program kodlarımız yazıyoruz. Program kodlarımız bu şekilde

import cv2  # kütüphane ekleme işlemi

yuzprogramı = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")  # kullanacağmız hazır yüz bulma programı

resim = cv2.imread("yuz.jpg")  # resmimizi belirtme

griresim = cv2.cvtColor(resim, cv2.COLOR_BGR2GRAY)  # resmimizi griye donuştürme

program = yuzprogramı.detectMultiScale(griresim, 1.3,3)  # programı çalıştırma (taranacak resim,büyütme oranı,kontrol sayısı)

for (a, b, c, d) in program:
    cv2.rectangle(resim, (a, b), (a + c, b + d), (255, 0, 0),
                  2)  # burada bulduğumuz insan yüzlerini kare içide alma işlemini yapıyoruz
    # (yüzlerin gösterileceği resim,(köşe ayarlama)(köşe ayarlama),(karenin rengi),karenin kalınlığı)

cv2.imshow("kapatmak için herhangi bir tuşa basınız", resim)  # resmin son halini gösterme

cv2.waitKey(0)
cv2.destroyAllWindows()  # herhangi bir tuşa basınca kapatmak için

Yorumsuz sade hali ise bu şekilde

import cv2 

yuzprogramı = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

resim = cv2.imread("yuz.jpg")

griresim = cv2.cvtColor(resim, cv2.COLOR_BGR2GRAY)

program = yuzprogramı.detectMultiScale(griresim, 1.3,3)

for (a, b, c, d) in program:
    cv2.rectangle(resim, (a, b), (a + c, b + d), (255, 0, 0),
                  2)  
cv2.imshow("kapatmak için herhangi bir tuşa basınız", resim)  

cv2.waitKey(0)
cv2.destroyAllWindows() 

Programı çalıştırdığımızda yüzü alanının kare içine alındığını görüyoruz.

Farklı bir resimde ise tüm yuzleri yine buluyor program.

Tek yapmamız gereken, proje dosyasına aktarmamız ve bu resmin ismini imread kısımına girmemiz.

Programın klasör bağlantıları ve görüntüsü ise şu şekilde

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir