Python 3.x 打开cv比较两个面嵌入

Python 3.x 打开cv比较两个面嵌入,python-3.x,opencv,face-recognition,Python 3.x,Opencv,Face Recognition,我通过了, 但我的应用程序只需要比较两张脸, 我有两张脸的嵌入,如何使用opencv比较它们? 链接中提到了用于从人脸提取嵌入的训练模型, 我想知道我应该尝试什么方法来比较两种人脸嵌入 (注意:我是这个领域的新手)首先,您的案例类似于给定的教程,而不是多个图像,您有一个图像需要与测试图像进行比较 所以你不需要在这里进行训练 你能行 # read 1st image and store encodings image = cv2.imread(args["image"]) rgb = cv2.cv

我通过了, 但我的应用程序只需要比较两张脸, 我有两张脸的嵌入,如何使用opencv比较它们? 链接中提到了用于从人脸提取嵌入的训练模型, 我想知道我应该尝试什么方法来比较两种人脸嵌入


(注意:我是这个领域的新手)

首先,您的案例类似于给定的教程,而不是多个图像,您有一个图像需要与测试图像进行比较

所以你不需要在这里进行训练

你能行

# read 1st image and store encodings
image = cv2.imread(args["image"])
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

boxes = face_recognition.face_locations(rgb, model=args["detection_method"])
encodings1 = face_recognition.face_encodings(rgb, boxes)

# read 2nd image and store encodings
image = cv2.imread(args["image"])
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

boxes = face_recognition.face_locations(rgb, model=args["detection_method"])
encodings2 = face_recognition.face_encodings(rgb, boxes)


# now you can compare two encodings
# optionally you can pass threshold, by default it is 0.6
matches = face_recognition.compare_faces(encoding1, encoding2)

匹配
将根据您的图像为您提供
根据您提到的文章,您可以仅使用

您可以使用来确定两张图片是否具有相同的面

import face_recognition
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")

biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

results = face_recognition.compare_faces([biden_encoding], unknown_encoding)

那个教程不是很短,在哪一步你被卡住了?我想说,在这个领域,通常没有“最好”的方法。您应该尝试不同的方法,找出哪一种更适合您。@除非我坚持使用人脸识别部分,否则在本教程中,他们已经有了已知人脸的数据集,并且他们将新人脸与自己的数据集进行比较,我只想比较两个未知人脸,我想检测它们是否相同。谢谢您的反馈,我已经在使用这种方法,但整个过程需要3-4秒,我想将时间缩短到1-1.5秒,因为我发现开放面模型进行编码所需的时间更少,但用于比较开放面模型生成的嵌入并不能给出准确的结果,因此,我试图找到其他方法来比较它们,然后再移动到其他模型尝试在
compare\u faces
中使用
tolerance
。您需要为您的案例找到最佳价值。默认值为
0.6
。尝试将其更改为
0.5
或更低