pythonapidata-structuresbad-requestyolov5

Status code 400 when posting multiple lists


I am working with YOLOv5 framework and I am trying to POST coordinates of a bounding box to an API server. The problem occurs when I am trying to post the coordinates of a bounding box as a list. Essentially I am trying to implement the following structure:

Boxes: [{x,y,w,h},
{x,y,w,h},
{x,y,w,h},
{x,y,w,h}]

main.py

            command = input('Enter command for a snap')
            if command == 'n':
                for *xyxy, conf, cls in reversed(det):
                    c1, c2 = (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3]))

                    center_point = round((c1[0]+c2[0])/2), round((c1[1]+c2[1])/2)
                    circle = cv2.circle(im0, center_point,5,(0,255,0),2)
                    text_coord = cv2.putText(im0,str(center_point), center_point,cv2.FONT_HERSHEY_PLAIN,2,(0,0,255))



                    # print(x_coord, y_coord, w_coord, h_coord)
                    # print(center_point)
                    x_coord = [c1[0]]
                    y_coord = [c1[1]]
                    w_coord = [c2[0] - c1[0]]
                    h_coord = [c2[1] - c1[1]]

                    boxes = x_coord + y_coord + w_coord + h_coord

                    data = {
                        'Boxes': boxes,
                    }
                    json_object = json.dumps(data, indent=4)

                    r = requests.post(
                        "http://127.0.0.1:8000/snippets/",
                        data=(json_object),
                        headers={'Authorization': 'Token 353101b2657b3779199777984c131f33b78656be',
                                 "Content-Type": "application/json"},
                    )
                    print(r.status_code)

Thanks in advance


Solution

  • layer1 = model1(frame)
    labels, cord = layer1.xyxyn[0][:, -1], layer1.xyxyn[0][:, :-1]
    n = len(labels) 
    for i in range(n):
         conf = cord[i]   //confidence values
         if conf>=0.6:
             x_shape, y_shape = frame.shape[1], frame.shape[0]
             x1, y1, x2, y2 = int(row[0] * x_shape), int(row[1] * y_shape), int(row[2] * x_shape), int(row[3] * y_shape)
         ....
            //model1.names[int(labels[i])]  return labels names
            
    

    Here is my code to get the labels and it's coordinates. You can use the code to generate a list. There also have another way. https://github.com/ultralytics/yolov5/issues/574