Как я могу получить каждый различный обнаруженный объект как в списке? - PullRequest
0 голосов
/ 09 июля 2019

Используя предварительно обученную модель COCO Tensorflow, я пытаюсь извлечь каждый обнаруженный объект из фрейма и сохранить его так, чтобы каждый из них имел разную метку.

Например:

ist=[["person1_info"],["person2_info']]

Я ищу некоторые страницы переполнения стека, как эта, Как считать объекты в Tensorflow Object Detection API , но у меня не было четкого результата. Основной цикл находится ниже:

  boxes = np.squeeze(boxes)
  scores = np.squeeze(scores)
  classes = np.squeeze(classes)

  indices = np.argwhere(classes == 1)
  boxes = np.squeeze(boxes[indices])

  scores = np.squeeze(scores[indices])
  classes = np.squeeze(classes[indices])

  # Visualization of the results of a detection.
  vis_util.visualize_boxes_and_labels_on_image_array(
      image_np,
      np.squeeze(boxes),
      np.squeeze(classes).astype(np.int32),
      np.squeeze(scores),
      category_index,
      use_normalized_coordinates=True,
      line_thickness=8)

  cv2.imshow('object detection', cv2.resize(image_np, (800,600)))

  if cv2.waitKey(25) & 0xFF == ord('q'):
    cv2.destroyAllWindows()
    break

1 Ответ

0 голосов
/ 09 июля 2019

Чтобы создать собственный список вывода, вы можете сделать это так:

(im_width, im_height, _) = frame.shape
boxes = np.squeeze(boxes)
scores = np.squeeze(scores)
classes = np.squeeze(classes).astype(np.int32)
out = []
for box, score, obj_class in zip(boxes, scores, classes):
    xmin, ymin, xmax, ymax = box

    # delete this if you need to keep normalized coordinates
    (xmin, xmax, ymin, ymax) = (xmin * im_width, xmax * im_width,
                                ymin * im_height, ymax * im_height)
    out.append([xmin, xmax, ymin, ymax, obj_class, score])
...