Untitled
unknown
python
2 years ago
2.1 kB
8
Indexable
import cv2 # Загрузка предварительно обученных каскадов для детекции лица и верхней части тела face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') upper_body_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_upperbody.xml') # Запуск веб-камеры cap = cv2.VideoCapture(1) while True: # Считывание кадра с веб-камеры ret, frame = cap.read() # Проверка успешности считывания кадра if not ret: print("Ошибка при считывании кадра") break # Конвертация кадра в оттенки серого gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Детекция лица faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # Детекция верхней части тела (плеч) upper_bodies = upper_body_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # Отрисовка прямоугольников вокруг лица и верхней части тела for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) for (x, y, w, h) in upper_bodies: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) # Проверка на сутулость (если обнаружено лицо и верхняя часть тела) if len(faces) > 0 and len(upper_bodies) > 0: # Проверка, что лицо находится выше верхней части тела if faces[0][1] < upper_bodies[0][1]: print("Внимание: Вы сутулитесь!") # Отображение кадра cv2.imshow('Frame', frame) # Выход из цикла при нажатии клавиши 'q' if cv2.waitKey(1) & 0xFF == ord('q'): break # Освобождение ресурсов cap.release() cv2.destroyAllWindows()
Editor is loading...
Leave a Comment