Итак, я получил код, который определяет, находится ли лицо на изображении в моих кодировках.Так что моя проблема в том, что если лицо не в Encodings, я могу передать строковую переменную в OneToOneField () или я могу установить для него значение по умолчанию?а также как я могу связать изображение в формате Numpy Array, да, я уже думаю о том, чтобы просто сохранить его в своей папке MEDIA, но как я могу связать его с ImageField ()?
Вот мой код:
models.py
def log_image_path(instance, filename):
extention = filename.split('.')[-1]
return os.path.join(settings.LOGS_ROOT, f"{uuid.uuid4()}.{extention}")
class MonitorLog(models.Model):
student_info = models.OneToOneField(Student, on_delete=models.CASCADE)
log_image = models.ImageField(upload_to=log_image_path)
log_time = models.DateTimeField(default=timezone.now)
tasks.py
def identify_face(arr):
master_encodings = pickle.loads(open(settings.TRAINING_FILE_DIR, 'rb').read())
arr = np.asarray(arr)
rgb = arr[:,:,::-1]
faces = face_recognition.face_locations(rgb, model='hog')
enc = face_recognition.face_encodings(rgb, faces)
main_enc = [encs for encs in enc]
for encoding in main_enc:
matches = face_recognition.compare_faces(master_encodings['encodings'], encoding)
name = 'Unknown'
if True in matches:
encIds = [encIndex for (encIndex, value) in enumerate(matches) if value]
counts = {}
for num in encIds:
name = master_encodings['student_number'][num]
counts[name] = counts.get(name, 0) + 1
name = max(counts, key=counts.get)
if name != "Unknown":
stud_ins = models.Student.objects.get(student_number=name)