如何使用 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。我的代码仅用于演示,因此您必须使用所需的检查来扩展它!
我试过了,但没用... 我的模型:
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。我的代码仅用于演示,因此您必须使用所需的检查来扩展它!