DOMOTIQUE (parce que c'est ludique et qu'on fait des economies)
JissJisseone
240 Messages
Le mardi 23 mars 2021 à 17:04:03
Alors je parlais de reco faciale (via opencv), qui marche tres bien. Je passe devant la camera, le script opencv (que j'ai traficoté) me reconnait, et envoi une requete http à mon domoticz. Donc JISSE (moi) passe devant la camera= device virtuel domoticz ON
Mais j'aimerai faire un script plus developpé pour faire un etat de presence de toute la famille, du genre Jisse est la, mais pas mes fils, ou, mes fils sont la, mais pas moi...et tout ça avec une camera et un capteur de porte...ou autre ?????
Donc des idees de script seraient les bienvenues..
Mais j'aimerai faire un script plus developpé pour faire un etat de presence de toute la famille, du genre Jisse est la, mais pas mes fils, ou, mes fils sont la, mais pas moi...et tout ça avec une camera et un capteur de porte...ou autre ?????
Donc des idees de script seraient les bienvenues..
Le vendredi 26 mars 2021 à 15:24:02
Je passe devant la camera, le script opencv (que j'ai traficoté) me reconnait...T'as réussi à faire en sorte qu'il te reconnaisse toi et personne d'autre ? Ou il détecte un visage et considère que c'est toi ?
JissJisseone
240 Messages
Le samedi 27 mars 2021 à 16:32:20
SLt ;;non c'est spécifique, il me reconnais (moi perso) et inscrit mon prenom (preconfig dans le script.python), sur l'ecran. La reconnaissance se fait grace à une bibliotheque de photo de moi (2 en realité). La biblio est interrogée dès qu'elle voit un visage, et fait un matching...
JissJisseone
240 Messages
Le samedi 27 mars 2021 à 16:33:37
je fais tourner le script que j'utilise, si tu veux...ce sont les script d'un github...
JissJisseone
240 Messages
Le samedi 27 mars 2021 à 20:53:31
Cool..tu ferais tourner les scripts sur un rasp?
JissJisseone
240 Messages
Le samedi 27 mars 2021 à 20:58:32
il va te falloir un rasp a jour ..OS buster...qui est, soit dit en passant, super bien, car il est optimisé pour rasp 3.
il va te falloir installer opencv, qui est la BASE des soft et freeware de reconnaissance faciale
il va te falloir installer opencv, qui est la BASE des soft et freeware de reconnaissance faciale
JissJisseone
240 Messages
Le samedi 27 mars 2021 à 21:04:15
tien voila le lien github :
https://github.com/ageitgey/face_recognition
https://github.com/ageitgey/face_recognition
Le dimanche 28 mars 2021 à 09:58:00
Pour l'instant je le ferai tourner sur mon PC, pour essayer déjà. Ensuite je verrai, ça dépendra du cas d'utilisation.
Oui, je connais OpenCV, j'avais utilisé cette lib quand j'avais implémenté l'algo de face tracking de Viola & Jones : https://www.firediy.fr/article/face-tracking-implementation-de-la-methode-de-viola-jones-en-c
Mais c'était du C++, pas du python.
Merci pour le lien, ça a l'air super complet !!
Oui, je connais OpenCV, j'avais utilisé cette lib quand j'avais implémenté l'algo de face tracking de Viola & Jones : https://www.firediy.fr/article/face-tracking-implementation-de-la-methode-de-viola-jones-en-c
Mais c'était du C++, pas du python.
Merci pour le lien, ça a l'air super complet !!
JissJisseone
240 Messages
Le mercredi 31 mars 2021 à 16:01:31
Oui il est bien bien complet, et surtout, si toutes les dépendances sont installées correctement, Bin c'est les seuls scripts qui tournent...touts ceux que j'avais recuperé de tuto ou autres me faisaient des plantages et des erreurs...
Regarde surtout le script /// face_recognition_from_webcam_faster /// Le faster c'est parce qu'ils ont augmenté les frame de la cam.
Tu t'y connais en scripts python ?
J'ai une bidouille à faire sur ce script /// face_recognition_from_webcam_faster /// et je ne sais pas comment m'y prendre ??
Regarde surtout le script /// face_recognition_from_webcam_faster /// Le faster c'est parce qu'ils ont augmenté les frame de la cam.
Tu t'y connais en scripts python ?
J'ai une bidouille à faire sur ce script /// face_recognition_from_webcam_faster /// et je ne sais pas comment m'y prendre ??
JissJisseone
240 Messages
Le mercredi 31 mars 2021 à 16:17:35
Bon je tente ma chance.
Dans ce script, j'ai rajouté les librairies permettant de faire des requetes http (vers domoticz)
Une requete part, dès qu'il y a une personne de la maison qui est reconnu (avec des photo de toute la famille dans un fichier qui est interrogé par le script).
Le probleme c'est que je n'arrive à faire partir qu'une seule requete JSON. Donc des que je suis reconnu(jissé), un interrupteur sur domoticz bascule en On
Mais si jamais un de mes fils passe devant la camera, il est reconnu lui aussi, mais il va faire basculer a On le meme interrupeur que pour moi :
Jissé passe devant la camera > l'interrupteur Jissé dans domoticz bascule On
Gabin passe devant la camera > l'interrupteur Jissé dans domoticz bascule On
En fait, dans ce script, c'est une variable qui est implemantée " NAME " qui recupere les photos et les prenoms correspondants.
Il faudrai que j'arrive à avoir une requete http par personne, et pas une seul requete pour 3 personne differentes
Houla...j’essaie d'etre clair mais....
Merci de me lire...et quelques conseils seraient les bienvenues
Dans ce script, j'ai rajouté les librairies permettant de faire des requetes http (vers domoticz)
Une requete part, dès qu'il y a une personne de la maison qui est reconnu (avec des photo de toute la famille dans un fichier qui est interrogé par le script).
Le probleme c'est que je n'arrive à faire partir qu'une seule requete JSON. Donc des que je suis reconnu(jissé), un interrupteur sur domoticz bascule en On
Mais si jamais un de mes fils passe devant la camera, il est reconnu lui aussi, mais il va faire basculer a On le meme interrupeur que pour moi :
Jissé passe devant la camera > l'interrupteur Jissé dans domoticz bascule On
Gabin passe devant la camera > l'interrupteur Jissé dans domoticz bascule On
En fait, dans ce script, c'est une variable qui est implemantée " NAME " qui recupere les photos et les prenoms correspondants.
Il faudrai que j'arrive à avoir une requete http par personne, et pas une seul requete pour 3 personne differentes
Houla...j’essaie d'etre clair mais....
Merci de me lire...et quelques conseils seraient les bienvenues
JissJisseone
240 Messages
Le mercredi 31 mars 2021 à 16:22:19
import face_recognition
import cv2
import numpy as np
import requests
import urllib
import json
# This is a demo of running face recognition on live video from your webcam. It's a little more complicated than the
# other example, but it includes some basic performance tweaks to make things run a lot faster:
# 1. Process each video frame at 1/4 resolution (though still display it at full resolution)
# 2. Only detect faces in every other frame of video.
# PLEASE NOTE: This example requires OpenCV (the `cv2` library) to be installed only to read from your webcam.
# OpenCV is *not* required to use the face_recognition library. It's only required if you want to run this
# specific demo. If you have trouble installing it, try any of the other demos that don't require it instead.
# Get a reference to webcam #0 (the default one)
video_capture = cv2.VideoCapture(0)
# Load a sample picture and learn how to recognize it.
obama_image = face_recognition.load_image_file("obama.jpg")
obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
# Load a sample picture and learn how to recognize it.
jisse_image = face_recognition.load_image_file("jisse.jpg")
jisse_face_encoding = face_recognition.face_encodings(jisse_image)[0]
# Load a sample picture and learn how to recognize it.
marius_image = face_recognition.load_image_file("marius.jpg")
marius_face_encoding = face_recognition.face_encodings(marius_image)[0]
# Load a sample picture and learn how to recognize it.
gabin_image = face_recognition.load_image_file("gabin.jpg")
gabin_face_encoding = face_recognition.face_encodings(gabin_image)[0]
# Create arrays of known face encodings and their names
known_face_encodings = [
obama_face_encoding,
jisse_face_encoding,
marius_face_encoding,
gabin_face_encoding
]
known_face_names = [
"Barack Obama",
"jisse",
"marius",
"gabin"
]
# Initialize some variables
face_locations = []
face_encodings = []
face_names = []
process_this_frame = True
while True:
# Grab a single frame of video
ret, frame = video_capture.read()
# Resize frame of video to 1/4 size for faster face recognition processing
small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
# Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
rgb_small_frame = small_frame[:, :, ::-1]
# Only process every other frame of video to save time
if process_this_frame:
# Find all the faces and face encodings in the current frame of video
face_locations = face_recognition.face_locations(rgb_small_frame)
face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)
face_names = []
for face_encoding in face_encodings:
# See if the face is a match for the known face(s)
matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
name = "Unknown"
# # If a match was found in known_face_encodings, just use the first one.
# if True in matches:
# first_match_index = matches.index(True)
# name = known_face_names[first_match_index]
# Or instead, use the known face with the smallest distance to the new face
face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)
best_match_index = np.argmin(face_distances)
if matches[best_match_index]:
name = known_face_names[best_match_index]
face_names.append(name)
r = requests.get('http://user:password@192.168.20.17:8080/json.htm?type=command&dparam=switchlight&idx=194&switchcmd=On')
print(r)
process_this_frame = not process_this_frame
# Display the results
for (top, right, bottom, left), name in zip(face_locations, face_names):
# Scale back up face locations since the frame we detected in was scaled to 1/4 size
top *= 4
right *= 4
bottom *= 4
left *= 4
# Draw a box around the face
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
# Draw a label with a name below the face
cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)
# Display the resulting image
cv2.imshow('Video', frame)
# Hit 'q' on the keyboard to quit!
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Release handle to the webcam
video_capture.release()
cv2.destroyAllWindows()
JissJisseone
240 Messages
Le vendredi 2 avril 2021 à 13:17:10
alors les amis...un petit coup de pouce??