1

我正在使用 tensorflow 和对象检测 api。我想在测试图像中打印对象的边界框位置。这一行向您展示了 vis_util.visualize_boxes_and_labels_on_image_array :

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)

我想查看“盒子”内部,因为我猜“盒子”可能是存储边界框的位置。所以,我将“盒子”转换为列表,但是当我在 cmd 上打印它时,它太复杂了。

对此有什么想法吗?

4

1 回答 1

1

我找到了解决方案。

1)在您引用的代码行之后,编写 print(boxes)。

2) 它将返回一个 [N,4] 数组,其中 N 是检测到的对象的数量,因此每一行都是具有唯一检测分数的检测到的对象。

3)每行有4列,按照检测分数的降序表示归一化的[ymin, xmin, ymax, xmax],即。

  • 第一行返回检测到的得分最高的对象的边界框坐标。
  • 第二行返回得分第二高的对象的边界框坐标,依此类推。

4) 要获得准确的坐标,请将 xmax 和 xmin 与图像 x 轴的上限相乘,并将 ymax 和 ymin 与 y 轴的上限值相乘。

于 2018-01-09T16:10:09.260 回答