import cv2
from gtts import gTTS
import os
import threading
# 사전에 "사람인식" 음성을 MP3 파일로 저장
tts = gTTS(text="사람을 인식하였습니다.", lang='ko') # 이 부분 수정 가능, 이 부분에 입력하는 텍스트 대로 해당 내용 말함!
tts.save("person_detected.mp3")
lock = threading.Lock()
def speak():
os.system("mpg321 person_detected.mp3")
with lock:
global already_spoken
already_spoken = False
def async_speak():
speak_thread = threading.Thread(target=speak)
speak_thread.start()
# 얼굴 인식을 위한 Haar Cascade 파일 로드
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 웹캠 설정
cap = cv2.VideoCapture(0)
already_spoken = False
while True:
# 웹캠에서 프레임 읽기
ret, frame = cap.read()
if not ret:
print("Failed to grab frame")
break
# 그레이스케일 변환
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 얼굴 인식
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)
# 인식된 얼굴에 사각형 그리기
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
with lock:
if len(faces) > 0 and not already_spoken:
already_spoken = True
async_speak()
# 결과 출력
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 메모리 해제
cap.release()
cv2.destroyAllWindows()
Copyright ⓒ TECH79 All right reserved