def annotate(request, frame_pk): context = {'frame': None, 'detection': None, 'existing': []} frame = None frame = Frame.objects.get(pk=frame_pk) context['frame'] = frame context['initial_url'] = '{}{}/frames/{}.jpg'.format(settings.MEDIA_URL, frame.video.pk, frame.frame_index) context['previous_frame'] = Frame.objects.filter(video=frame.video, frame_index__lt=frame.frame_index).order_by( '-frame_index')[0:1] context['next_frame'] = Frame.objects.filter(video=frame.video, frame_index__gt=frame.frame_index).order_by( 'frame_index')[0:1] context['detections'] = Region.objects.filter(frame=frame, region_type=Region.DETECTION) for d in Region.objects.filter(frame=frame): temp = { 'x': d.x, 'y': d.y, 'h': d.h, 'w': d.w, 'pk': d.pk, 'box_type': "detection" if d.region_type == d.DETECTION else 'annotation', 'label': d.object_name, 'full_frame': d.full_frame, 'detection_pk': None } context['existing'].append(temp) context['existing'] = json.dumps(context['existing']) if request.method == 'POST': form = AnnotationForm(request.POST) if form.is_valid(): applied_tags = form.cleaned_data['tags'].split(',') if form.cleaned_data['tags'] else [] create_annotation(form, form.cleaned_data['object_name'], applied_tags, frame) return JsonResponse({'status': True}) else: raise ValueError, form.errors return render(request, 'annotate.html', context)
def annotate(request, frame_pk): context = {'frame': None, 'detection': None, 'existing': []} frame = None frame = Frame.objects.get(pk=frame_pk) context['frame'] = frame context['initial_url'] = '{}{}/frames/{}.jpg'.format(settings.MEDIA_URL, frame.video.pk, frame.frame_index) context['previous_frame'] = Frame.objects.filter(video=frame.video, frame_index__lt=frame.frame_index).order_by( '-frame_index')[0:1] context['next_frame'] = Frame.objects.filter(video=frame.video, frame_index__gt=frame.frame_index).order_by( 'frame_index')[0:1] context['detections'] = Region.objects.filter(frame=frame, region_type=Region.DETECTION) for d in Region.objects.filter(frame=frame): temp = { 'x': d.x, 'y': d.y, 'h': d.h, 'w': d.w, 'pk': d.pk, 'box_type': "detection" if d.region_type == d.DETECTION else 'annotation', 'label': d.object_name, 'full_frame': d.full_frame, 'detection_pk': None } context['existing'].append(temp) context['existing'] = json.dumps(context['existing']) if request.method == 'POST': form = AnnotationForm(request.POST) if form.is_valid(): applied_tags = form.cleaned_data['tags'].split(',') if form.cleaned_data['tags'] else [] create_annotation(form, form.cleaned_data['object_name'], applied_tags, frame) return JsonResponse({'status': True}) else: raise ValueError, form.errors return render(request, 'annotate.html', context)