Init commit

This commit is contained in:
pporcheret
2026-10-24 17:55:05 +02:00
parent 7152b10695
commit c9c3d5f223
122 changed files with 7154 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
FACE_DB=/home/hermes/faces
FACE_TOLERANCE=0.48
CAMERA_INDEX=0
+3
View File
@@ -0,0 +1,3 @@
FACE_DB=/home/hermes/faces
FACE_TOLERANCE=0.48
CAMERA_INDEX=0
+3
View File
@@ -0,0 +1,3 @@
# MCP_face_recognition
Copier `.env.example` vers `.env`, puis créer le venv et installer `requirements.txt`.
@@ -0,0 +1,28 @@
import os, cv2, face_recognition
from pathlib import Path
from dotenv import load_dotenv
from mcp.server.fastmcp import FastMCP
load_dotenv();mcp=FastMCP("Alfred Face Recognition");DB=Path(os.getenv('FACE_DB','/home/hermes/faces'));T=float(os.getenv('FACE_TOLERANCE','0.48'))
def encodings():
known=[]
for person in DB.iterdir() if DB.exists() else []:
if not person.is_dir():continue
for f in person.glob('*'):
try:
im=face_recognition.load_image_file(str(f)); es=face_recognition.face_encodings(im)
if es:known.append((person.name,es[0]))
except Exception:pass
return known
@mcp.tool()
def identify_people(camera_index:int=0):
cap=cv2.VideoCapture(camera_index);ok,frame=cap.read();cap.release()
if not ok:raise RuntimeError('Caméra indisponible')
rgb=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB); locs=face_recognition.face_locations(rgb); es=face_recognition.face_encodings(rgb,locs); known=encodings();out=[]
for e in es:
name='inconnu';best=T
for n,k in known:
d=face_recognition.face_distance([k],e)[0]
if d<best:name,best=n,d
out.append({'name':name,'distance':float(best)})
return {'count':len(out),'people':out,'unknown_count':sum(x['name']=='inconnu' for x in out)}
if __name__=='__main__':mcp.run()
@@ -0,0 +1,4 @@
mcp>=1.12
python-dotenv>=1.0
face-recognition>=1.3
opencv-python-headless>=4.10