Mar 012020
2.434 kez okundu
Haarcascade Yöntemiyle Yüz Tanıma
Haarcascade yöntemini kullanarak bir görselin içindeki yüzleri yakalamak ve yakalanan yüzlerle ilgili -buzlama, aksesuar ekleme, vb- işlemler yapmak hızlı ve pratik bir çalışma yoludur.
Linkteki videoda bu konuyu işledim. Kaynak kodlarını da aşağıda sunuyorum.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# yuz_saptama_haar01.py import cv2 faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml') def kamera_sec(kno): kamera = cv2.VideoCapture(kno) # kamera = cv2.VideoCapture('xyz.mp4') kamera.set(3,640) # genişlik kamera.set(4,480) # yukseklik return kamera kamera = kamera_sec(0) dosya = 'yuzsaptama.mp4' kaydedici = None blur = False kaydet = False while True: ret, imaj = kamera.read() # imaj = cv2.flip(imaj, -1) # kamera ters gösteriyorsa gri = cv2.cvtColor(imaj, cv2.COLOR_BGR2GRAY) yuzler = faceCascade.detectMultiScale( gri, scaleFactor=1.2, minNeighbors=5, minSize=(20, 20) ) for (x,y,w,h) in yuzler: cv2.rectangle(imaj,(x,y),(x+w,y+h),(255,0,0),2) roi_gray = gri[y:y+h, x:x+w] roi_color = imaj[y:y+h, x:x+w] if blur: # Bulanıklaştır yimaj = imaj[y:y+h,x:x+w] yimaj = cv2.GaussianBlur(yimaj, (99, 99), 30) # bulanık görüntüyü yerleştir imaj[y:y+h, x:x+w] = yimaj cv2.imshow('kare',imaj) if kaydet: if kaydedici is None and dosya is not None: # fourcc = cv2.VideoWriter_fourcc(*"XVID") # .avi # fourcc = cv2.VideoWriter_fourcc(*"MJPG") # .jpg fourcc = cv2.VideoWriter_fourcc(*"mp4v") # .mp4 kaydedici = cv2.VideoWriter(dosya, fourcc, 24.0, (imaj.shape[1], imaj.shape[0]), True) if kaydedici is not None: kaydedici.write(imaj) k = cv2.waitKey(1) & 0xff if k == 27 or k==ord('q'): # çıkış için 'ESC' veya 'q' break elif k == ord('0'): kamera.release() kamera=kamera_sec(0) elif k == ord('1'): kamera.release() kamera = kamera_sec(1) elif k == ord('b'): blur = not blur elif k == ord('k'): kaydet = not kaydet if kamera: kamera.release() if kaydedici is not None: kaydedici.release() cv2.destroyAllWindows() |
Ahmet Aksoy