在tensorflow对象中查找边界框坐标

时间:2018-03-08 22:16:37

标签: tensorflow object-detection bounding-box

您好我是tensorflow对象检测的新手api我试图在我的图像中找到对象的边界框坐标。我编写了以下代码,但它无法正常工作。

 def find_bounding_boxes(image, graph):
      with graph.as_default():
        with tf.Session() as sess:
          width, height = image.size 
          boxes = graph.get_tensor_by_name('detection_boxes:0')
          np.squeeze(boxes)
          ymin = boxes[0][1][0]*height
          xmin = boxes[0][1][1]*width
          ymax = boxes[0][1][2]*height
          xmax = boxes[0][1][3]*width
          print ('Top left')
          print (xmin,ymin,)
          print ('Bottom right')
          print (xmax,ymax)

我得到以下输出:

Top left
Tensor("mul_3:0", dtype=float32) Tensor("mul_2:0", dtype=float32)
Bottom right
Tensor("mul_5:0", dtype=float32) Tensor("mul_4:0", dtype=float32)
Top left
Tensor("mul_7:0", dtype=float32) Tensor("mul_6:0", dtype=float32)
Bottom right
Tensor("mul_9:0", dtype=float32) Tensor("mul_8:0", dtype=float32)
Top left
Tensor("mul_11:0", dtype=float32) Tensor("mul_10:0", dtype=float32)
Bottom right
Tensor("mul_13:0", dtype=float32) Tensor("mul_12:0", dtype=float32)

2 个答案:

答案 0 :(得分:1)

我也在寻找如何在tensorflow对象检测API中找到坐标,我找到了这个答案。它对我有用:

width = image.size
height = image.size
i = 1
ymin = boxes[0][i][0]*height
xmin = boxes[0][i][1]*width
ymax = boxes[0][i][2]*height
xmax = boxes[0][i][3]*width

print ('Top left')
print (xmin,ymin)
print ('Bottom right')
print (xmax,ymax)

我不知道如何找到width, height = image.size,这样做会出错。

编辑:我想通了,我改变了:

来自

width, height = image.size

width = image.shape[1] height = image.shape[0]

它给了我图像的真实宽度和高度。如果有人想找到多个边界框的坐标,请按照我在link上的回答进行操作。

答案 1 :(得分:-2)

将all转换为int:

pom.xml