Önceki dersimizde Raspberry Pi içine OpenCV nasıl yüklenir bunu göstermiştik. Bu uygulamaya başlamadan önce eğer OpenCV kütüphanesini Raspberry Pi içine kurmadıysanız bunu yapmanız gerekmektedir.
İlk olarak https://github.com/opencv/opencv/tree/master/data/haarcascades sitesinden, yüz tanımlama yapacağımız için haarcascade_frontalcatface.xml dosyasını indiriyoruz. Bunu kodlarımı yazacağım Python dosyası ile aynı klasör içine atıyorum
Kodları yazmak için Raspian işletim sisteminde kurulu olan Thonny Python IDE dosyasını çalıştırıyoruz.
Buraya daha önceden yazmış olduğum (buraya tıklayarak ulaşabilirsiniz. ) OpenCV ile kamerada yüz tespiti kodlarımı aynen yapıştırıyorum. Kodlarımız 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()
Ardından çalıştır diyoruz ve
Gördüğünüz üzere telefonumda açtığım Micheal Jackson (RIP) yüzünü algıladı ve kare içerisine aldı.
Peki aynı programda yüz dışında farklı nesneler de algılamak istersek ?
Bunun tabi ki birçok farklı yöntemi var, ancak yukarıda size verdiğim linkte eğer aradığınız nesne mevcut ise
Burada birçok hazır kütüphane görmektesiniz.
Mesela gözleri de seçmek istiyoruz. Hemen haarcascade_eye.xml dosyasını indiriyoruz ve az önceki dosyamla aynı yere yapıştırıyorum.
Ve programda 3. satırdaki adreslemeyi indirdiğim dosya ismi değiştiriyorum
Ardından çalıştıra bastığımızda. Bu sefer gözleri seçip mavi kareler altına aldığını görürüz.
Bu arada iletişim hızından veya VNC server ile bağlantımdan mı kaynaklandığını bilemediğim, kameradaki hareketleri geç algılama problemi ile karşılaştığımı da söylemeliyim. Siz de bu projeleri deneyerek, tecrübelerinizi bize aktarabilirsiniz. Bir sonraki projemiz algıladığı nesnelere göre bir takip sistemi kurulması olucak. İyi çalışmalar !