Передайте изображение массива Numpy в ImageField () - PullRequest
0 голосов
/ 18 февраля 2019

Итак, я получил код, который определяет, находится ли лицо на изображении в моих кодировках.Так что моя проблема в том, что если лицо не в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...