人脸识别小例子

发布时间:2026/7/31 1:23:48
人脸识别小例子 今天老师主要讲了opencvyolo深度学习AI模型代码辅助之类的例子。上午实现了一个人脸识别相关例子代码用AI大模型实现打开DeepSeek输入以下提示词你是一个资深的深度学习工程师。写一个人脸识别的python程序导入的第三方库是opencv和facerecognition功能如下1打开摄像头检查人脸可能有多张脸2把摄像头出现的人脸对比一个预置的人脸库facedb文件夹人脸库中的每个人脸照片的文件名是本人名字3对比成功的打印出人名。不要异常处理。很快DS生成了第一个版本。运行出错需要安装那几个第三方库。import cv2import face_recognitionimport osimport numpy as npimport timeimport csvfrom datetime import datetime这几个第三方库cv2没有face_recognition没有但直接安装失败。pip install opencv-python face_recognition尤其是face_recognition需要好几个依赖库。再次查询DS安装步骤如下1安装 Microsoft C Build Tools在微软官方页面下载即可运行下载的安装程序在“工作负载” (Workloads) 标签页中勾选“使用C的桌面开发” (Desktop development with C)其余默认即可。安装完成后重启电脑。2安装 CMake重要dlib 的编译依赖 CMake。**下载**访问CMake官网【cmake.org/download/】下载Windows下的安装程序.msi文件。**安装**运行安装程序时**务必勾选“Add CMake to the system PATH for all users”**。**验证**安装完成后在**新的**命令提示符中运行 cmake --version能正常显示版本号即表示成功。3安装dlib。但是直接安装dlib有问题pip install dlib失败。只能下载whl文件再问DS按照提示下载安装成功了。4接着就可以安装pip install face_recognition了。安装成功后运行代码没有找不到库的错误了但是又出来不支持图片的错误。用DS豆包元宝反复排除错误各种修改始终不成功把图片换了一遍也不行。一筹莫展中最后只好使用在我这个红米笔记本电脑中安装的ClaudeCode解决了。我把提示词告诉了它它自动写好了程序做测试同样出现了不能识别图片的问题。不断地排查最后解决了原来是numpy和dlib的版本出现冲突导致的图片不能识别。claude把我电脑中的numpy降级了从2降到了1。终于正确出结果了。这个python比较讨厌的地方就是各种库的版本不兼容问题。最后运行这个程序它会打开摄像头拍照你的人脸与facedb中的图片进行对比找出一样的图片就把图片名字输出显示。代码如下import os import cv2 import face_recognition facedb_path os.path.join(os.path.expanduser(~), Desktop, facedb) # 1. 加载 facedb 中所有人脸图片提取人脸编码 print(正在加载 facedb 中的人脸图片...\n) db_faces [] # [(filename, encoding)] for filename in os.listdir(facedb_path): filepath os.path.join(facedb_path, filename) if not os.path.isfile(filepath): continue img face_recognition.load_image_file(filepath) encodings face_recognition.face_encodings(img) if encodings: db_faces.append((filename, encodings[0])) print(f {filename} - 已提取人脸特征) else: print(f {filename} - 未检测到人脸跳过) if not db_faces: print(facedb 中没有检测到任何人脸程序退出。) exit() print(f\n共加载 {len(db_faces)} 张人脸开始摄像头比对...\n) # 2. 打开摄像头 cap cv2.VideoCapture(0) if not cap.isOpened(): print(无法打开摄像头) exit() print(按 SPACE 拍摄照片进行比对按 ESC 退出程序。\n) while True: ret, frame cap.read() if not ret: print(无法读取摄像头画面。) break cv2.imshow(摄像头 - SPACE拍照 / ESC退出, frame) key cv2.waitKey(1) 0xFF if key 27: # ESC break if key 32: # SPACE rgb_frame cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) face_locations face_recognition.face_locations(rgb_frame) face_encodings face_recognition.face_encodings(rgb_frame, face_locations) if not face_encodings: print(当前画面未检测到人脸请重试。\n) continue print(f拍摄完成检测到 {len(face_encodings)} 张人脸正在比对...) # 3. 将摄像头中的每张人脸与 facedb 中的每张人脸比对 matched_names set() for cam_encoding in face_encodings: for filename, db_encoding in db_faces: results face_recognition.compare_faces( [db_encoding], cam_encoding, tolerance0.5 ) if results[0]: matched_names.add(filename) # 4. 输出结果 if matched_names: print(人脸匹配成功对应的图片) for name in matched_names: print(f {name}) else: print(没有匹配的图片。) print() cap.release() cv2.destroyAllWindows()