You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用face_recognition.compare_faces未获匹配True值的技术求助

解决face_recognition.compare_faces未匹配到正确人脸的问题

修正后的完整代码

import face_recognition

# 加载已知名人图片
obama_image = face_recognition.load_image_file("famous_figures/barack_obama.jpg")
john_image = face_recognition.load_image_file("famous_figures/john_cena.jpg")
bruce_image = face_recognition.load_image_file("famous_figures/bruce_willis.jpg")

# 加载未知图片(实际为Barack Obama)
unknown_image = face_recognition.load_image_file("unknown_obama.jpg")

# 生成人脸编码(取每张图片的第一个人脸编码)
obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
john_face_encoding = face_recognition.face_encodings(john_image)[0]
bruce_face_encoding = face_recognition.face_encodings(bruce_image)[0]
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

# 存储已知人脸编码及对应人名
known_faces = [
    obama_face_encoding,
    john_face_encoding,
    bruce_face_encoding
]
known_names = [
    "Barack Obama",
    "John Cena",
    "Bruce Willis"
]

# 对比人脸编码
matches = face_recognition.compare_faces(known_faces, unknown_face_encoding)

# 匹配成功时输出指定结果
if True in matches:
    matched_index = matches.index(True)
    print(f"Yes there is a match. The image is {known_names[matched_index]}.")
else:
    print("No match found.")

错误分析与修正点

  • 核心错误:原代码的known_faces列表误用了未定义的justin_face_encoding和ryan_face_encoding,这两个变量既没有对应图片加载逻辑,也未生成有效编码,导致对比时只有无效数据,输出(False, False)。
  • 修正操作:将known_faces替换为实际生成的john_face_encoding和bruce_face_encoding,同时保留obama_face_encoding,确保所有目标名人的编码都被纳入对比范围。

关键步骤说明

  • 图片加载:使用face_recognition.load_image_file分别加载famous_figures文件夹内的三张名人图片,以及待匹配的未知图片。
  • 人脸编码生成:通过face_recognition.face_encodings将每张图片转换为128维人脸特征编码,取列表第一个元素(默认每张图片仅包含单人脸)。
  • 人脸对比:调用face_recognition.compare_faces将未知人脸编码与所有已知编码逐一对比,返回布尔值列表。
  • 结果输出:检查布尔列表中是否存在True,若存在则定位对应人名并输出指定内容。

内容的提问来源于stack exchange,提问作者timothylee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:48:21