import sqlite3
from deepface import DeepFace
from PIL import Image
from io import BytesIO
def connect_to_db():
conn = sqlite3.connect('user_photo.db')
return conn
def get_file_from_db(customer_id):
cursor = connect_to_db().cursor()
select_fname = """SELECT photo from photos where customer_id = ?"""
cursor.execute(select_fname, (customer_id,))
item = cursor.fetchone()
cursor.connection.commit()
return item
def get_testsign(customer_id):
cursor = connect_to_db().cursor()
select_sign = """SELECT testphoto from test where customer_id = ?"""
cursor.execute(select_sign, (customer_id,))
item = cursor.fetchone()
cursor.connection.commit()
return item
def matchNew():
try:
input_image = get_testsign(customer_id)
input_image_open = [Image.open(BytesIO(x)) for x in input_image]
reg_image = get_file_from_db(customer_id)
reg_image_open = [Image.open(BytesIO(x)) for x in reg_image]
obj = DeepFace.verify(input_image_open, reg_image_open)
print(obj)
return print({"error":False})
except Exception as e:
print(e)
return print({"error": True})
if __name__=='__main__':
customer_id = '080abc'
matchNew()上面的代码是从数据库中获取图像并进行验证以进行面部验证。图像以BLOB的形式存储在数据库中。DeepFace.verify采用两个参数,即两张图片进行人脸验证。我得到的错误是(“传递给验证函数的无效参数:”,) {‘error ':True}
我在windows 10上使用python3.8。
数据库中的表是这样的:表照
发布于 2021-10-07 12:12:13
input_image_open和reg_image_open都是PIL图像。DeepFace需要精确的图像路径、base64编码的图像或numpy数组作为输入。您可以将pil图像转换为numpy,如下所示。
import numpy as np
input_image_open_np = np.array(input_image_open.convert("L"))
reg_image_open_np = np.array(reg_image_open.convert("L"))
obj = DeepFace.verify(input_image_open_np, reg_image_open_np)https://stackoverflow.com/questions/68589940
复制相似问题