如何使用 face_recognition api 使用 django 将照片编码添加到数据库?

How to add photo encodings to db with django using face_recognition api?

我试过了,但没用... 我的模型:

class Staff(models.Model):

    photo = models.FileField()
    encodings = models.TextField()

    def get_encodings(self):
        enc = face_recognition.face_encodings(self.photo)
        return enc

    def save(self, *args, **kwargs):
        self.encodings = self.get_encodings()
        super(Staff, self).save(*args, **kwargs)

我尝试添加新对象时遇到的错误

__call__(): incompatible function arguments. The following argument types 
are supported:
1. (self: dlib.fhog_object_detector, image: array, upsample_num_times: 
int=0) -> dlib.rectangles

Invoked with: <dlib.fhog_object_detector object at 0x0000023D8CD9E570>, 
<FieldFile: photo_2018-12-05_23-09-20.jpg>, 1

您必须使用 PIL 库将文件转换为图像文件。 face_recognition.face_encodings 期望一个 numpy 数组作为输入

 import PIL.Image

class Staff(models.Model):

    photo = models.FileField()
    encodings = models.TextField()

    def get_encodings(self):
        enc = face_recognition.face_encodings(self.read_image_from_file(self.photo))
        return enc

    def save(self, *args, **kwargs):
        self.encodings = self.get_encodings()
        super(Staff, self).save(*args, **kwargs)

   def read_image_from_file(file):
       return np.array(PIL.Image.open(file))

当您尝试 read/open file/image 时,不要忘记使用 try 和 catch。我的代码仅用于演示,因此您必须使用所需的检查来扩展它!