如何在 DynamoDB 上存储 numpy.ndarray?
How to store numpy.ndarray on DynamoDB?
当我调用 face_encodings
函数时,numpy.ndarray
由 @ageitgey's facial_recognition Python library 生成。我需要将这些数据保存到亚马逊的 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'\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00'
然后您可以使用 np.frombuffer
恢复数组。
np.array_equal(arr, np.frombuffer(encoded, dtype=int))
# True
当我调用 face_encodings
函数时,numpy.ndarray
由 @ageitgey's facial_recognition Python library 生成。我需要将这些数据保存到亚马逊的 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'\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00'
然后您可以使用 np.frombuffer
恢复数组。
np.array_equal(arr, np.frombuffer(encoded, dtype=int))
# True