You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python及TensorFlow新手:TensorFlow目标检测API中获取边界框坐标

解决TensorFlow Object Detection API边界框坐标获取问题

嘿,刚接触TensorFlow Object Detection API的时候,搞懂边界框的坐标确实容易懵,我来一步步给你讲清楚:

先搞懂output_dict['detection_boxes']的数值含义

你打印出来的这个数组里,每一个元素都是一个长度为4的列表,格式是**[ymin, xmin, ymax, xmax],而且这些数值都是归一化后的比例值**(范围在0到1之间):

  • ymin:边界框顶部距离图像顶部的比例
  • xmin:边界框左侧距离图像左边缘的比例
  • ymax:边界框底部距离图像顶部的比例
  • xmax:边界框右侧距离图像左边缘的比例

之所以数值看起来多,是因为API默认会返回大量候选检测框,大部分置信度很低,所以我们需要结合置信度过滤后再处理。

把归一化坐标转换成实际像素坐标

要得到图像里的真实像素坐标,你需要先获取图像的实际高度和宽度,再把归一化值乘以对应的维度。举个具体的代码例子:

# 假设你已经完成了检测,得到了output_dict,且图像是加载好的numpy数组
image_height, image_width = image.shape[:2]

# 遍历检测结果,只处理置信度高于0.5的框(阈值可以自己调整)
for idx in range(len(output_dict['detection_scores'])):
    confidence_score = output_dict['detection_scores'][idx]
    if confidence_score > 0.5:
        # 取出当前框的归一化坐标
        normalized_box = output_dict['detection_boxes'][idx]
        # 转换为像素坐标
        ymin_pixel = int(normalized_box[0] * image_height)
        xmin_pixel = int(normalized_box[1] * image_width)
        ymax_pixel = int(normalized_box[2] * image_height)
        xmax_pixel = int(normalized_box[3] * image_width)
        
        # 打印或者使用这些坐标
        print(f"目标 {idx+1} 置信度:{confidence_score:.2f},坐标:xmin={xmin_pixel}, ymin={ymin_pixel}, xmax={xmax_pixel}, ymax={ymax_pixel}")

为什么你的代码里没有boxes变量?

教程里的绘制代码可能是直接调用了output_dict['detection_boxes'],没有单独把它赋值给名为boxes的变量,所以你直接用output_dict['detection_boxes']就完全没问题,不用纠结有没有这个变量名~

这样处理后,你就能准确获取到每个有效检测目标的边界框像素坐标啦!

内容的提问来源于stack exchange,提问作者Mandy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:21:14