OpenCV Kütüphanesi ile Yorgunluk / Uykusuzluk Ölçer

Python Python - Örnekler Python - Projeler Yazılım
import cv2		# Opencv  kütüphanesi
import dlib
import pyttsx3          # Ses çalma kütüphanesi
from scipy.spatial import distance
import os

kamera = cv2.VideoCapture(0)
yuz_tanimlama = dlib.get_frontal_face_detector()
yuz_tanimlama_dosyasi = dlib.shape_predictor(os.path.dirname(__file__) + "\shape_predictor_68_face_landmarks.dat")

def fnkGozTanimla(goz):
	a = distance.euclidean(goz[1], goz[5])
	b = distance.euclidean(goz[2], goz[4])
	c = distance.euclidean(goz[0], goz[3])
	goz_orani = (a+b)/(2*c)
	return goz_orani

def fnkKonus(yazi):
    sesCal = pyttsx3.init()
    sesCal.setProperty("rate", 130) 
    sesler = sesCal.getProperty('voices')
    sesCal.setProperty('voice', sesler[0].id)
    sesCal.say(yazi)
    sesCal.runAndWait()

while True:
	null, img = kamera.read()
	gray_scale = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
	yuzler = yuz_tanimlama(gray_scale)
	
	for yuz in yuzler:
		yuz_isaretleri = yuz_tanimlama_dosyasi(gray_scale, yuz)
		solGoz = [] 
		sagGoz = [] 

		# Sag Göz İçin
		for n in range(42, 48):
			x = yuz_isaretleri.part(n).x
			y = yuz_isaretleri.part(n).y
			sagGoz.append((x, y))
			sonrakiNokta = n+1
			if n == 47:
				sonrakiNokta = 42
			x2 = yuz_isaretleri.part(sonrakiNokta).x
			y2 = yuz_isaretleri.part(sonrakiNokta).y
			cv2.line(img, (x, y), (x2, y2), (0, 255, 0), 1)

        # Sol Göz İçin
		for n in range(36, 42):
			x = yuz_isaretleri.part(n).x
			y = yuz_isaretleri.part(n).y
			solGoz.append((x, y))
			sonrakiNokta = n+1
			if n == 41:
				sonrakiNokta = 36
			x2 = yuz_isaretleri.part(sonrakiNokta).x
			y2 = yuz_isaretleri.part(sonrakiNokta).y
			cv2.line(img, (x, y), (x2, y2), (255, 255, 0), 1)


		oran = (fnkGozTanimla(solGoz)+fnkGozTanimla(sagGoz))/2
		oran = round(oran, 2)

		if oran < 0.25:
			cv2.putText(img, "Yorgunluk Belirtisi Saptandi.", (50, 100),
						cv2.FONT_HERSHEY_PLAIN, 2, (21, 56, 210), 3)
			cv2.putText(img, "Dikkat Uyanmalisin!", (50, 450),
						cv2.FONT_HERSHEY_PLAIN, 2, (21, 56, 212), 3)
			fnkKonus("Dikkat Uyanmalisin!")

	cv2.imshow("Yorgunluk / Uykusuzluk  Ölçer", img)
	if(cv2.waitKey(1) & 0xFF== ord('q')):
		break
kamera.release()
cv2.destroyAllWindows()

Veri dosyası yukarıdaki kodları kaydettiğiniz klasörün içinde olsun.

Yukarıdaki örnekte “sesler[0].id” kodu 0 id numarasına sahip sesi kullanır.

Aşağıdaki kod bilgisayarınızda kullanabileceğiniz sesleri listeler. Yukarıdaki kodda 0 sayısını değiştirerek var olan sesleri deneyebilirsiniz.

import pyttsx3
sesCal = pyttsx3.init()

sesler = sesCal.getProperty('voices')
for ses in sesler:
    print("Voice:")
    print(" - ID: %s" % ses.id)
    print(" - İsim: %s" % ses.name)
    print(" - Dil: %s" % ses.languages)
    print(" - Cinsiyet: %s" % ses.gender)
    print(" - Yaş: %s" % ses.age)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir