Python人脸验证函数无法运行,出现AttributeError相关错误求助
问题分析与解决方案
你遇到的AttributeError是因为你错误地把函数本身当成了face.verify_face_to_face返回的结果对象来使用。verify_result_same是你定义的函数,它本身并没有is_identical和confidence这两个属性——这些属性应该来自于人脸验证API返回的结果对象。
核心问题拆解
你的代码里犯了两个关键错误:
- 直接用函数名
verify_result_same去访问API结果的属性,而没有先调用API获取实际的验证结果 - 逻辑判断用了按位与
&,Python里逻辑与应该用and,而且要注意判断的优先级
修正后的代码
def verify_result_same(): # 第一步:调用API获取验证结果,存到变量中 verify_result = face_client.face.verify_face_to_face(source_image1_id, detected_faces_ids[0]) # 第二步:用返回的结果对象访问属性,注意逻辑运算符用and,调整判断逻辑 if verify_result.is_identical and verify_result.confidence > 0.5: print('Faces from {} & {} are of the same person, with confidence: {}' .format(source_image_file_name1, target_image_file_names[0], verify_result.confidence)) print("Valid face verification") else: print('Faces from {} & {} are of a different person, with confidence: {}' .format(source_image_file_name1, target_image_file_names[0], verify_result.confidence)) print("Invalid face verification") text = "Face verification is not valid. Please try again." send_msg(text)
关键改动说明
- 获取API结果对象:先调用
face_client.face.verify_face_to_face并把返回值赋值给verify_result变量,这个变量才是包含is_identical和confidence属性的对象 - 修正逻辑运算符:把
&改成and——&是用于位运算的,逻辑判断必须用and - 调整判断逻辑:先检查
is_identical是否为True,再检查置信度是否大于0.5,这样更符合人脸验证的业务逻辑(只有当识别为同一人且置信度达标时才判定有效)
现在你可以正常调用这个函数了,比如执行verify_result_same(),它会正确调用API并基于返回结果执行对应的逻辑。
内容的提问来源于stack exchange,提问作者Rifaye Ibrahim
相关产品推荐
相关产品推荐

