Как создать папку в Django для хранения пользовательских данных

#python-3.x #django #file #opencv #video-processing

#python-3.x #django #файл #opencv #обработка видео

Вопрос:

Цель кода:

  1. Пользователь загружает видео на наш сайт django.
  2. Используйте opencv, чтобы разделить его на отдельные кадры (это хорошо работает).
  3. Мы храним фреймы в уникальной папке на нашем сервере (именно в этом и заключается проблема).

С чем нам нужна помощь:

  1. Создание уникальной папки на основе введенного пользователем видео с помощью django с правильным путем.
  2. Сохраните кадры видео в эту папку.

Код до сих пор:

 from django.db import models
from django.urls import reverse
import uuid
import cv2
import os
from django.db import models
from PIL import Image, ImageFilter
from django.urls import reverse
from PIL import Image


class Video(models.Model):
    vid = models.FileField(upload_to=image_upload_location(filename='jpg'))
    img = models.ImageField(upload_to=image_upload_location(filename='jpg'))
    date_added = models.DateTimeField(auto_now_add=True)
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

    def mp4_to_image(self, *args, **kwargs):
        super().save(*args, **kwargs)

  

Это часть, с которой мы боремся, создавая уникальную папку для каждого видеовхода.
Этот код работает на моем локальном компьютере, однако нам необходимо интегрировать его с django framework

         try:
           if not os.exists('exit_folder_path'):
           os.makedirs('exit_folder_path')
        except OSError:
           print ('Error: Creating directory')
  

Здесь мы используем opencv для разделения видео на отдельные кадры, а затем сохраняем их.

Функция imwrite() сохраняет кадр в формате jpeg по пути, определяемому параметром name.

Мы хотели бы, чтобы эти файлы были сохранены по пути к папке, указанному в предыдущем разделе.

         cap = cv2.VideoCapture(self.vid.path)
        currentFrame = 0
        while (True):
        # ret returns a Boolean Value if the frame can be read
           ret, frame = cap.read()
           # If the frame can't be read then we exit the loop
           if ret == False:
              break
           # Saves image of the current frame in jpg file
            
            name = 'exit_folder_path'   str(currentFrame).zfill(6)   '.jpg'
           
            cv2.imwrite(name, frame)
           
            currentFrame  = 1

        cap.release()
  

Проблемы:

  1. Код сохраняет введенное пользователем видео в папку с именем jpg, но папка с отдельными кадрами из видео не создается.

Любая помощь очень ценится.

Ответ №1:

Я думаю, вам нужна папка мультимедиа. Проверьте здесь -> https://docs.djangoproject.com/en/3.1/topics/files /