加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在TensorFlow对象检测API教程中获取边界框坐标

发布时间:2020-12-16 22:30:14 所属栏目:Python 来源:网络整理
导读:我是python和Tensorflow的新手.我试图从Tensorflow Object Detection API运行object_detection_tutorial文件, 但是当检测到物体时,我无法找到可以获取边界框坐标的位置. 相关代码: # The following processing is only for single image detection_boxes =

我是python和Tensorflow的新手.我试图从Tensorflow Object Detection API运行object_detection_tutorial文件,
但是当检测到物体时,我无法找到可以获取边界框坐标的位置.

相关代码:

 # The following processing is only for single image
        detection_boxes = tf.squeeze(tensor_dict['detection_boxes'],[0])
        detection_masks = tf.squeeze(tensor_dict['detection_masks'],[0])

我假设边界框被绘制的地方是这样的:

 # Visualization of the results of a detection.
  vis_util.visualize_boxes_and_labels_on_image_array(
      image_np,output_dict['detection_boxes'],output_dict['detection_classes'],output_dict['detection_scores'],category_index,instance_masks=output_dict.get('detection_masks'),use_normalized_coordinates=True,line_thickness=8)
  plt.figure(figsize=IMAGE_SIZE)
  plt.imshow(image_np)

我尝试打印output_dict [‘detection_boxes’],但我不确定数字是什么意思.有很多.

array([[ 0.56213236,0.2780568,0.91445708,0.69120586],[ 0.56261235,0.86368728,0.59286624,0.8893863 ],[ 0.57073039,0.87096912,0.61292225,0.90354401],[ 0.51422435,0.78449738,0.53994244,0.79437423],

……

   [ 0.32784131,0.5461576,0.36972913,0.56903434],[ 0.03005961,0.02714229,0.47211722,0.44683522],[ 0.43143299,0.09211366,0.58121657,0.3509962 ]],dtype=float32)

我找到了类似问题的答案,但我没有一个名为box的变量.我怎样才能获得坐标?谢谢!

最佳答案

I tried printing output_dict[‘detection_boxes’] but I am not sure what
the numbers mean

您可以自己查看代码. visualize_boxes_and_labels_on_image_array定义为here.

请注意,您正在传递use_normalized_coordinates = True.如果你跟踪函数调用,你会看到你的数字[0.56213236,0.691205]等是图像坐标所在的值[ymin,xmin,ymax,xmax]:

(left,right,top,bottom) = (xmin * im_width,xmax * im_width,ymin * im_height,ymax * im_height)

由函数计算:

def draw_bounding_box_on_image(image,ymin,xmax,color='red',thickness=4,display_str_list=(),use_normalized_coordinates=True):
  """Adds a bounding box to an image.
  Bounding box coordinates can be specified in either absolute (pixel) or
  normalized coordinates by setting the use_normalized_coordinates argument.
  Each string in display_str_list is displayed on a separate line above the
  bounding box in black text on a rectangle filled with the input 'color'.
  If the top of the bounding box extends to the edge of the image,the strings
  are displayed below the bounding box.
  Args:
    image: a PIL.Image object.
    ymin: ymin of bounding box.
    xmin: xmin of bounding box.
    ymax: ymax of bounding box.
    xmax: xmax of bounding box.
    color: color to draw bounding box. Default is red.
    thickness: line thickness. Default value is 4.
    display_str_list: list of strings to display in box
                      (each to be shown on its own line).
    use_normalized_coordinates: If True (default),treat coordinates
      ymin,xmax as relative to the image.  Otherwise treat
      coordinates as absolute.
  """
  draw = ImageDraw.Draw(image)
  im_width,im_height = image.size
  if use_normalized_coordinates:
    (left,ymax * im_height)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读