EddyGiusepe commited on
Commit
58ec196
·
1 Parent(s): cdc4b9f
1_Real-Time_Smile_Detection_with_OpenCV/Real-Time_Smile_Detection_with_OpenCV.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Data Scientist.: Dr. Eddy Giusepe Chirinos Isidro
4
+
5
+ Detecção de sorriso em tempo real com OpenCV
6
+ ============================================
7
+ Aqui usamos OpenCV para detectar o sorriso de uma pessoa.
8
+
9
+ https://dontrepeatyourself.org/post/smile-detection-with-python-opencv-and-haar-cascade/
10
+
11
+ https://www.youtube.com/watch?v=RoXV6skDDBQ
12
+
13
+ https://www.linkedin.com/events/7148705687949258752/comments/
14
+ """
15
+ import cv2
16
+ import numpy as np
17
+
18
+ # Carregue o classificador de rosto e sorriso pré-treinado:
19
+ face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
20
+ smile_cascade = cv2.CascadeClassifier("haarcascade_smile.xml")
21
+
22
+ cap = cv2.VideoCapture(0)
23
+
24
+
25
+ while True:
26
+ ret, frame = cap.read()
27
+ if not ret:
28
+ break
29
+
30
+ # Converter para escala de cinza:
31
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
32
+
33
+ # Detectar rostos no frame:
34
+ faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30))
35
+
36
+ for (x, y, w, h) in faces:
37
+ # Desenhe um retângulo ao redor do rosto:
38
+ cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
39
+
40
+ # Extraia a região de interesse (ROI) da face:
41
+ roi_gray = gray[y:y + h, x:x + w]
42
+ roi_color = frame[y:y + h, x:x + w]
43
+
44
+ # Detecte sorrisos na região do rosto:
45
+ smiles = smile_cascade.detectMultiScale(roi_gray, scaleFactor=1.8, minNeighbors=20, minSize=(25, 25))
46
+
47
+
48
+ for (sx, sy, sw, sh) in smiles:
49
+ cv2.rectangle(roi_color, (sx, sy), (sx + sw, sy + sh), (0, 255, 0), 2)
50
+ cv2.putText(roi_color, "Smile", (sx, sy - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
51
+
52
+ cv2.imshow("Detecção de sorriso", frame)
53
+
54
+ if cv2.waitKey(1) & 0xff == ord('q'):
55
+ break
56
+ # if cv2.waitKey(0) == 27:
57
+ # break
58
+
59
+ cap.release()
60
+ cv2.destroyAllWindows()
1_Real-Time_Smile_Detection_with_OpenCV/haarcascade_frontalface_default.xml ADDED
The diff for this file is too large to render. See raw diff
 
1_Real-Time_Smile_Detection_with_OpenCV/haarcascade_smile.xml ADDED
The diff for this file is too large to render. See raw diff
 
1_Real-Time_Smile_Detection_with_OpenCV/sem_sorriso.jpeg ADDED
1_Real-Time_Smile_Detection_with_OpenCV/sorriso_de_Imagens.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # https://www.tutorialspoint.com/smile-detection-using-haar-cascade-in-opencv-using-python
2
+
3
+ #!/usr/bin/env python3
4
+ """
5
+ Data Scientist.: Dr. Eddy Giusepe Chirinos Isidro
6
+
7
+ Detecção de sorriso usando cascata haar em OpenCV usando Python
8
+ ===============================================================
9
+ Usaremos o classificador Haar cascade para a detecção de sorriso em uma Imagem.
10
+ Um classificador em cascata haar (haar cascade) é um método eficaz de detecção de
11
+ objetos. É uma abordagem baseada em aprendizado de máquina. Para treinar um
12
+ classificador em cascata haar para detecção de sorriso, o algoritmo inicialmente
13
+ precisa de muitas imagens positivas (imagens com sorriso) e imagens negativas
14
+ (imagens sem sorriso). Então o classificador é treinado a partir dessas imagens
15
+ positivas e negativas. Em seguida, é usado para detectar sorrisos em outras imagens.
16
+ """
17
+ # Importamos a Biblioteca:
18
+ import cv2
19
+
20
+ # Leia a Imagem de entrada:
21
+ img = cv2.imread('um_sorriso.jpg')
22
+ #img = cv2.imread('sem_sorriso.jpeg')
23
+ #img = cv2.imread('tres_sorrisos.jpeg')
24
+
25
+ # Converta a imagem em tons de cinza:
26
+ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
27
+
28
+ # Leia a cascata haar para detecção de rosto:
29
+ face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # https://github.com/opencv/opencv/tree/master/data/haarcascades
30
+ # Leia a cascata haar para detecção de sorriso:
31
+ smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')
32
+
33
+ # Detecta rostos na imagem de entrada:
34
+ faces = face_cascade.detectMultiScale(gray, 1.3, 5)
35
+ print('Número de rostos detectados:', len(faces))
36
+
37
+ # Faça um loop sobre todos os rostos detectados:
38
+ for (x, y, w, h) in faces:
39
+
40
+ # Desenhar um retângulo em uma face:
41
+ cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 255), 2)
42
+ cv2.putText(img, "Face", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 255), 2)
43
+ roi_gray = gray[y:y + h, x:x + w]
44
+ roi_color = img[y:y + h, x:x + w]
45
+
46
+ # Detectando sorriso no rosto roi:
47
+ smiles = smile_cascade.detectMultiScale(roi_gray, 1.8, 20)
48
+ if len(smiles) > 0:
49
+ print("Sorriso detectado")
50
+ for (sx, sy, sw, sh) in smiles:
51
+ cv2.rectangle(roi_color, (sx, sy), ((sx + sw), (sy + sh)), (0, 0, 255), 2)
52
+ cv2.putText(roi_color, "Sorriso", (sx, sy),
53
+ cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
54
+ else:
55
+ print("Sorriso não detectado")
56
+ cv2.putText(img, "Sem sorriso", (x, y + h + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
57
+
58
+
59
+ # Exibir uma imagem em uma janela:
60
+ cv2.imshow('Mostrando a Imagem', img)
61
+ cv2.waitKey(5000) # Quando é zero, você deve pressionar qualquer tecla para sair. OBS: cv2.waitKey(5000) esperará 5 segundos antes de fechar a janela automaticamente.
62
+ cv2.destroyAllWindows()
1_Real-Time_Smile_Detection_with_OpenCV/tres_sorrisos.jpeg ADDED
1_Real-Time_Smile_Detection_with_OpenCV/um_sorriso.jpg ADDED