Site icon IT Tutorial

OPENCV İLE FACE DETECTİON

Merhaba arkadaşlar , bu yazımda sizlere OpenCv ile face detection nasıl yapılır açıklayacağım. Öncelikle OpenCv’nin ne olduğundan kısaca bahsederek uygulamayı açıklamaya geçeceğim.

OPENCV ( Open Source Computer Vision ) : OpenCv, açık kaynak kodlu bir görüntü işleme kütüphanesidir. OpenCv kütüphanesi içeriğinde görüntü işleme ve makine öğrenimine yönelik birçok algoritma bulunmaktadır. Bu algoritmalar sayesinde yüz tanıma, plaka tanıma, insan hareketlerini ve mimiklerini tespit edebilme, nesne sınıflandırma gibi işlemleri kolayca yapabilmemizi sağlar. OpenCv’yi C++ , C #, Python, C ve Java programlama dilleriyle kullanabiliriz.

Şimdi uygulamamıza geçelim.

Ben uygulamayı Jupyter Notebook ile gerçekleştireceğim. İlk olarak Opencv kütüphanesini indirmeliyiz bunun için Jupyter Notebook’ta açtığımız sayfamızda aşağıdaki komutu çalıştırmalıyız :

!!pip install opencv-python

Bu komutu yazarak shift + enter tuşlarına aynı anda basarak komutumuzu çalıştırıyoruz ve opencv kütüphanesi yüklenmeye başlıyor. Kullanılacak olan kütüphaneleri import ederek işlemlerimize devam ediyoruz.

import numpy as np

import matplotlib.pyplot as plt

import cv2

Komutlarını çalıştırarak opencv, numpy ve matplotlib kütüphanelerini import ediyoruz.

Yüz tanıması yapmak istediğimiz fotoğrafı dosyamıza yüklüyoruz ve şimdi projede kullanacağımız fotoğrafı okumak için imread() komutunu çalıştırıyoruz.

img = cv2.imread("image.jpg")

plt.imshow(img);

Fotoğrafı ekranımızda görüntülemek için imshow() komutunu kullanıyoruz.

Çok renkli bir fotoğraf üzerinde işlem yapmak işimizi biraz daha zorlaştırabilir bunun için fotoğrafı siyah beyaz yaparak işleme devam edeceğiz.

gray_scale = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

plt.imshow(gray_scale);

Fotoğrafı siyah beyaz hale getirdikten sonra bir kez daha görüntüledik.

Şimdi burada önemli bir işlemimiz var. Önceden eğitilmiş yüz tanıma dosyasıhaarcascade_frontalface_default.xml’i indirmemiz gerekiyor. Bu xml dosyasını https://github.com/opencv/opencv/tree/master/data adresinden indirebilirsiniz.

face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

Komutu haarcascade isimli önceden eğitilmiş yüz tanıma dosyasını tanımlıyoruz.

faces = face_cascade.detectMultiScale(gray_scale, 1.1, 5)

Burada 1.1 olarak belirtilen scaleFactor bizim ölçekleme miktarımızdır. Komut içinde verilen 1.1 değeri verilen görüntünün %10 oranında boyutunun azaltılması anlamına gelmektedir. Komut içinde 5 olarak belirtilen değer ise minNeighbors parametresidir. Bu parametre bir yüzü dikdörtgen içine almak için ne kadar komşu sayısının gerekli olduğunu hesaplamaktadır.

for(x,y,w,h) in faces:

      cv2.rectangle(img, (x,y), (x+w,y+h), (0,0,255), 4)

For komutumuz ise tanımlanan yüzün etrafına çizilecek olan dikdörtgeni oluşturur. Burada x , y bizim belirlediğimiz noktalardır , w (weight) , h (height) ile koordinatları belirliyoruz. cv2.rectangle fonksiyonu ile tutulan koordinat bilgileri dikdörtgen kutu içerisine alınmaktadır. (0,0,255) olarak belirlenen değer ise dikdörtgenin rengini belirleyen RGB renk kodlarıdır , 4 ise oluşturulan çizgilerin kalınlığıdır.

cv2.imshow("face detection",img)

cv2.waitKey(0)

cv2.destroyAllWindows() 

Fotoğrafı imshow() komutu ile görüntülüyoruz. Waitkey değeri yani gecikme değeri olarak 0 tanımlanmıştır bu isteğe göre değiştirilebilir. Waitkey çalıştıktan sonra pencerenin hemen kapanmasını engellemektedir. Destroy fonksiyonu ise kapatılmasını sağlamaktadır.

Ben bu uygulamayı gerçekleştirdiğimde yukarıdaki sonucu aldım. Umarım sizlerde bu komutları çalıştırarak , parametreler üzerinde değişiklikler yaparak gerçekleştirirsiniz …

Exit mobile version