Önceki uygulamalarımız da python ile nesne takibi, resim üzerindeki yüzleri tanıma gibi uygulamalar yapmıştık bunun için önceki yazılarımızı okumanızı öneririm. Şimdi ise Python ile bilgisayar kamerasından yüz tanıma uygulamalarına göz atıcağız.
Not: Bu uygulamayı gerçekleştirmek için bir önceki uygulamada bahsettiğimiz 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 dosyayı indirip proje dosyamıza ekliyoruz.
Öncelikle şunu belirtelim ki yazılımda bir şeyi yapmak için farklı farklı yollar vardır yani bir sonuca ulaşmak için bir çok farklı yol kullanılabilir. Her yolda öğreneceğimiz adımlar ve çıkaracağımız dersler olur. Bu yüzden biz size kamerada yüz tespiti için farklı uygulamalardan dökümanlar sunacağız.
Bu kaynaktan yararlandığımız program kodlarında yüz tespitimizin program kodları bu şekilde
import numpy as np
import cv2
faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while True:
ret, img = cap.read()
#img = cv2.rotate(img,cv2.ROTATE_180) #görüntü ters çıkarsa bu komutla engelleyebilirsiniz.
img = cv2.flip(img, 1) # veya burada 0-1-2 komutlarını deneyerek görüntünün döndüğünü görebilirsiniz.
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
cv2.imshow('video',img)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
Bu uygulamayı ilk kullandığınızda kamera ters çalışıyorsa eğer,
img = cv2.rotate(img,cv2.ROTATE_180)
Komutunu uygulayarak kamerayı düz hale getirebilirsiniz. Veya
img = cv2.flip(img, 1)
Komutundaki sonraki rakam “1” i, 0 veya -1 gibi değerlerle değiştirerek kameranızın x ekseninde veya y ekseninde dönüşünü sağlayabilirsiniz
Program kodlarını çalıştırdık ve şu şekilde bir sonuç aldık

Şimdi ise bir farklı kaynaktan nispeten biraz farklı bir uygulama ile devam edelim bu sefer tespit edilen yüz çerçevesi sürekli değişkenlik göstermekte ve tespit edildiği anda altında “İnsan” yazılmakta
Program kodlarımız şu şekilde:
import cv2
#Haar cascade classifier yukle
faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
#kamera okumak icin
video_capture = cv2.VideoCapture(0)
while True:
ret,frame = video_capture.read() #frame oku
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #siyah-beyaz yap
faces = faceCascade.detectMultiScale(gray, 1.1, 5, minSize=(100,100)) #yuzleri bul
for (x,y,w,h) in faces: #yuzleri isaretle
cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0) ,2)
cv2.putText(frame, "insan", (x,y+h+20), cv2.FONT_HERSHEY_DUPLEX, .5, (0,255,0))
#esc ile cik
cv2.imshow('Video', frame)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
video_capture.release()
cv2.destroyAllWindows()
Programı çalıştırdığımızda ise karşımıza şöyle bir ekran geliyor
