DeepFace verify() 可以接受图像数组或 PIL Image 对象吗?

Can DeepFace verify() accept an image array or PIL Image object?

我的 DeepFace 实现

def verify(img, frame, model):
    results= DeepFace.verify(img, frame, enforce_detection=False, model_name=model)
    print("result: ", results)
    verification= results['verified']
    if verification is True:
        print(model, "Successfully recognised. SCORE=")
        return
    return

我正在尝试将 PIL 图像而不是“*.jpg”传递给 verify() 函数,但它给出了错误

    raise ValueError("Invalid arguments passed to verify function: ", instance)
ValueError: ('Invalid arguments passed to verify function: ', <PIL.Image.Image image mode=RGB size=160x160 at 0x7F4D5D03FBE0>)

请问有什么方法可以直接传递 PIL 图像对象或图像数组,而无需事先将其保存到磁盘?

我传递的是:

picture= "extracted_face_picture/single_face_picture.jpg"
picture= Image.open(picture)
picture= picture.resize((160,160))

frames_from_npz= "video_faces.npz"
frames= np.load(frames_from_npz)
frames= frames["arr_0"]
i=0
for frames_arr in frames:
    frame= Image.fromarray(frames_arr)

    df.verify(picture,frame, "Facenet")
    print(i, "Above reuslts are for frame", frame_num)
    
    i+= 1

请注意,我仍然可以通过将图像保存在目录中然后使用 imread() 读取它们来成功实现 DeepFace 我只想知道是否有其他方法可以不将图像保存到磁盘

如果您使用的是 this 模块,文档中说:

Herein, face pairs could be exact image paths, numpy array or base64 encoded images

因此,据推测,您可以将 PIL Images 制作成像这样的 Numpy 数组:

results = DeepFace.verify(np.array(PILIMAGE), ...)

非常感谢兄弟,我按照你的方法得到了我的结果

对于其他人: 我跟随兄弟 Mark Setchell 后再次遇到错误,但这正是因为我将一个输入作为路径传递,而另一个作为 numpy 数组传递。 如果必须传递 numpy 数组,请确保为两个输入参数都传递它。

picture= "extracted_face_picture/single_face_picture.jpg"
picture= Image.open(picture)
.
.
df.verify(picture, np.array(frame), "Facenet")

更正:

df.verify(np.array(picture),np.array(frame), "Facenet")

非常感谢 Mark Setchell 兄弟。