OpenCV ve Python İle Görüntü İşleme “ Kamerada Yüz Tespiti”

Ö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

Bir cevap yazın

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