Opencv face detection yüz algılama
Yüz tanımlama son yılların en çok ilgi çeken konularından biri oldu. Özellikle yeni çıkan uygulamalar ve yeni çıkan son sürüm telefonlar artık bu teknolojiyi kullanıyorlar.Bende size nasıl fotograftaki yüzü tanımlayacağınızı etap etap göstereceğim.
Classifier(Ayırtediciler)
Bir görüntünün positif mi negatif mi olduguna karar veren bilgisayar programıdır.Yeni bir fotografı doğru bir şekilde test edebilmesi için yüzbinlerce fotograf üzerinde deneme yapılmıştır.
Haar Clasfıer
Paul Viola ve Michael Jones tarafından oluşturuldu . H.C makine öğrenmesi yaklaşımına sahiptir.
Örnek olarak göz bölgelerinin burun ve yanak kısımlarından daha koyu oldugu özelliğine odaklanır.
İkinci olarak ta gözlerin iki göz arasındaki bölümden daha koyu olma özelliğinden yararlanılmıştır.
Peki neler gerekli bunu yapabilmek için o zaman başlayalım.
Bu kod python3 ve üzeri sürümlerinde çalışmaktadır.
İlk olarak opencv-python bu yazıyı takip ederek indirebilirsiniz
Gerekli modullerin içe aktarılması
import OpenCV library
import numpy as np
import cv2
import matplotlib.pyplot as plt
import time
Şimdi bir kaç özelllikten bahsedelim
Resmi okumak için:
test1 =cv2.imread('/testresim.jpg')
Bir resmi görmek için
öncelikle açılacak olan pencere ismini String olarak ilk parametreye giriyoruz ,İkinci parametreye ise resmin yolunu giriyoruz.
cv2.imshow('Test resim',"..../resimyolu")
cv2.waitKey(0)
cv2.destroyAllWindows()`
Burdaki waitkey çalıştıktan sonra pencerenin hemen kapanmasını engelliyor. Destroy ise kapatıyor.
İsterseniz daha sonra kullanabileceğiniz bir fonksiyondan bahsedelim. ConverToRGB
resimde farklı renk alanlarının oşumasını sağlar.
Bir sonraki aşamalarda ihtiyacınız olacagından dolayı haarcascade_frontalface_alt.xml dosyasını indiriniz(Google'a yazarsaınız opencv'nin data klasörünün içindedir.).
Cascade classifier'ımızı yükleyelim.
haar_face_cascade = cv2.CascadeClassifier('/haarcascade_frontalface_alt.xml')`
#Sonra resimimizi okuyalım lütfen resim yolunu tam giriniz yoksa farklı hatalar alabilirsiniz.
test1 = cv2.imread('..../narcos.jpg')
#Resmimizi griye dönüştürelim.
gray_img = cv2.cvtColor(test1, cv2.COLOR_BGR2GRAY)
Çok ölçekli algılama fonksiyonun özellikleri nelerdir?
Bu objeleri tanımak için kullanılan genel bir fonksiyondur.
- ilk parametresi resim
- ikinci parametresi scaleFActor Bir resimde bir yüzün başka bir yüzden büyük olması durumunda ortaya çıkan bozulmayı engeller.
minNeighbors:
Nesneleri algılamak için kullanılan bir algoritmadır.Yanındaki nesnelere bakarak bunu yapar.
Kodumuza geçelim.
faces = haar_face_cascade.detectMultiScale(gray_img, scaleFactor=1.2, minNeighbors=5)`
#Yüzü tanımladık şmdi de üzerine bir çokgen çizelim.
for (x, y, w, h) in faces:
cv2.rectangle(test1, (x, y), (x+w, y+h), (0, 255, 0), 2)``
#Son olarak bakalım Pabloyu bulabildik mi:)
cv2.imshow("test",convertToRGB(test1))
cv2.waitKey()
Pabloyu bulunca morarmış biraz :)
Not:Bu kodun gelişmiş halini github hesabıma yakında koyacağım oradan takip edebilirsiniz.
Posted on coogger.com - The platform that rewards information sharing
Congratulations, your contribution has been approved.
You can contact us on discord.
coogger-moderator
You got a 1.07% upvote from @postpromoter courtesy of @hakancelik!
Want to promote your posts too? Check out the Steem Bot Tracker website for more info. If you would like to support the development of @postpromoter and the bot tracker please vote for @yabapmatt for witness!