-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathR3.py
More file actions
70 lines (51 loc) · 1.96 KB
/
R3.py
File metadata and controls
70 lines (51 loc) · 1.96 KB
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
import cv2
import numpy as np
path = cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
path2 = cv2.data.haarcascades + "haarcascade_eye.xml"
# Inicializa o classificador cascade
face_classifier = cv2.CascadeClassifier(path)
# configura a captura de imagem da webcam
video_cap = cv2.VideoCapture(0)
# se a webcam abrir pego um frame
if video_cap.isOpened():
rval, frame = video_cap.read()
else:
rval = False
while rval:
# Exibe saida da imagem
cv2.imshow("normal", frame)
cv2.imshow("result", frame)
# Atualiza com um novo frame
rval, frame = video_cap.read()
# ESC para sair do programa
key = cv2.waitKey(10)
if key == 27:
break
# Função de callback, quando ocorre um evento do mouse, essa função é chamada
def mouse_click(event, x, y, flags, param):
global frame
# Se foi o botão esquerdo do mouse
if event == cv2.EVENT_LBUTTONDOWN:
# Converte o frame para escala de cinza
img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Realiza a detecção de face na imagem em cinza
faces_return = face_classifier.detectMultiScale(img_gray, scaleFactor = 1.2, minNeighbors = 5)
# Faz a varredura na lista de faces detectadas em faces_return
for (x,y,w,h) in faces_return:
# Desenha um retangulo em cada face detectada
img = frame.copy()
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),1)
# Aplica uma mascara no frame completo
img[y:y+h, x:x+w] = cv2.medianBlur(img[y:y+h, x:x+w],35)
# Exibe saida da imagem
cv2.imshow("result", img)
# Se foi o botão direito do mouse
if event == cv2.EVENT_RBUTTONDOWN:
print('test')
# Seta a função de callback que será chamada
# Evento 'image', função callback mouse_click
cv2.setMouseCallback("result", mouse_click)
cv2.waitKey(1)
# fecha a janela.
video_cap.release()
cv2.destroyAllWindows()