タスク管理アプリを djangoで作ってます。
django内で起動したカメラから取得した画像、動画を ファイル選択の過程を通さず、直接アップロードしたいです。
*取得する画像について。
現時点では画像は、ret, jpeg = cv2.imencode('.jpg', frame) で jpgを取得しています。
下記のような ファイルを選択する工程を省いて、django内で取得したjpgをボタンが押されたらformでpost するようにしたいです。
python
1def post_detail(request, pk): 2 post = Post.objects.get(pk=pk) 3 if request.method == 'POST': 4 form = CommentForm(request.POST, request.FILES) 5 6 if form.is_valid(): 7 comment=form.save(commit=False) 8 comment.post=post 9 comment.name=request.user 10 11 12 if 'video' in request.FILES: 13 video = request.FILES['video'] 14 result = cloudinary.uploader.upload_large(video) 15 video_url = result['url'] 16 format=os.path.splitext(video_url) 17 18 form.cleaned_data['video'] = video_url 19 comment.video=form.cleaned_data['video']+'????'+str(format)+'????' 20 21 if 'image' in request.FILES: 22 image=request.FILES['image'] 23 result = cloudinary.uploader.upload(image) 24 image_url = result['url'] 25 form.cleaned_data['image'] = image_url 26 comment.image=form.cleaned_data['image'] 27 28 jpg=generate_frame() 29 if jpg: 30 result = cloudinary.uploader.upload(jpg) 31 image_url = result['url'] 32 form.cleaned_data['image'] = image_url 33 comment.verified_image=form.cleaned_data['image'] 34 35 36 comment.save() 37 return redirect("post_detail",pk=post.pk) 38 else: 39 form = CommentForm() 40 41 return render(request, "registration/post_detail.html",{"post":post, "form":form}) 42 43 44#画像を取得(動画) 45def generate_frame(): 46 capture = cv2.VideoCapture(0) # USBカメラから 47 48 did_not_get_image=True 49 while did_not_get_image: 50 if not capture.isOpened(): 51 print("Capture is not opened.") 52 break 53 # カメラからフレーム画像を取得 54 ret, frame = capture.read() 55 if not ret: 56 print("Failed to read frame.") 57 break 58 # フレーム画像バイナリに変換 59 ret, jpg = cv2.imencode('.jpg', frame) 60 did_not_get_image=False 61 capture.release() 62 return jpg

あなたの回答
tips
プレビュー