#!/usr/bin/env python3 """ 人脸检测脚本 用法: python3 face_recognizer.py detect # 检测人脸,返回 JSON python3 face_recognizer.py encode # 生成人脸 encoding,返回 JSON 依赖:face_recognition(pip install face_recognition) 如果未安装,返回空数组而不是崩溃。 """ import sys import json import os def detect(image_path): try: import face_recognition img = face_recognition.load_image_file(image_path) locs = face_recognition.face_locations(img) encs = face_recognition.face_encodings(img, locs) result = [] for i, (loc, enc) in enumerate(zip(locs, encs)): top, right, bottom, left = loc result.append({ 'faceId': i, 'bbox': {'top': top, 'right': right, 'bottom': bottom, 'left': left}, 'encoding': enc.tolist() }) return result except ImportError: return [] # face_recognition 未安装时静默失败 except Exception as e: return {'error': str(e)} def encode_only(image_path): try: import face_recognition img = face_recognition.load_image_file(image_path) encs = face_recognition.face_encodings(img) return [enc.tolist() for enc in encs] except ImportError: return [] except Exception as e: return {'error': str(e)} if __name__ == '__main__': if len(sys.argv) < 3: print(json.dumps([])) sys.exit(0) cmd = sys.argv[1] path = sys.argv[2] if not os.path.exists(path): print(json.dumps({'error': f'File not found: {path}'})) sys.exit(1) if cmd == 'detect': print(json.dumps(detect(path))) elif cmd == 'encode': print(json.dumps(encode_only(path))) else: print(json.dumps([]))