当我调用face_encodings
函数时,我有这个numpy.ndarray
由@ageitgey的facial_recognition Python库生成的。我需要将此数据保存到亚马逊的 DynamoDB;但我不确定如何。
当我运行face_encodings
函数时,我得到的numpy.ndarray
是从给定图像中表示一个人的脸。我可以使用这些数据与另一张图像进行比较,并检查该人(表示为编码)是否存在于该图像中。
我以为我可以将numpy.ndarray
保存为二进制文件(使用 numpy.ndarray.tobytes,但我不确定如何将该二进制文件(当我从 DynamoDB 检索数据时)转换回numpy.ndarray
。
我要比较的代码应该是这样的:
unknown_encoding = face_recognition.face_encodings(unknown_picture)[0]
# database_encoding_array should come from DynamoDB
results = face_recognition.compare_faces(database_encoding_array, unknown_encoding, tolerance=0.595)
# results is an array of booleans
总之,我不知道将numpy.ndarray
保存到 DynamoDB 的最佳方法是什么,以及如何在以后查询它。
您可以尝试使用ndarray.tostring
将results
转换为字节字符串。对于 Dynamo 来说,这应该很简单。
arr = np.array([1, 2])
encoded = arr.tostring()
encoded
# b'x01x00x00x00x00x00x00x00x02x00x00x00x00x00x00x00'
然后,可以使用np.frombuffer
恢复阵列。
np.array_equal(arr, np.frombuffer(encoded, dtype=int))
# True