news 2026/6/15 17:28:24

pycocotools绘制标注结果(bbox,segment,pose)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pycocotools绘制标注结果(bbox,segment,pose)

博主提供docker开发镜像(主要面向深度学习、计算机视觉和机器人开发等需要 GPU 支持的场景)用于测试所有博客用例代码,下载地址(ubuntu24_cux_dev)[https://wilson.blog.csdn.net/article/details/156309082]

以下是一个基于pycocotools开发的 Python 函数,支持对bbox(边界框)segment(分割掩码)pose(关键点)分别提供激活参数的可视化方案。该函数通过动态过滤标注类型实现灵活控制:

importmatplotlib.pyplotaspltfrompycocotools.cocoimportCOCOimportnumpyasnpdefvisualize_coco_annotations(ann_file,img_dir,img_id=None,show_bbox=True,show_segment=True,show_pose=True,figsize=(12,8)):""" 可视化 COCO 格式标注,支持按需激活 bbox/segment/pose 参数: ann_file (str): COCO 标注文件路径 (.json) img_dir (str): 对应图像目录路径 img_id (int, optional): 指定图像ID,None 表示随机选择 show_bbox/show_segment/show_pose (bool): 是否显示对应元素 figsize (tuple): 图像显示尺寸 """# 初始化 COCO APIcoco=COCO(ann_file)# 获取图像列表img_ids=coco.getImgIds()target_id=img_idifimg_idisnotNoneelsenp.random.choice(img_ids)img_info=coco.loadImgs(target_id)[0]# 加载对应图像img_path=f"{img_dir}/{img_info['file_name']}"img=plt.imread(img_path)# 获取当前图像所有标注ann_ids=coco.getAnnIds(imgIds=target_id)anns=coco.loadAnns(ann_ids)# 创建可视化画布plt.figure(figsize=figsize)ax=plt.gca()ax.imshow(img)ax.axis("off")# 按类型过滤并绘制标注filtered_anns=[]# 处理 bboxifshow_bbox:bbox_anns=[annforanninannsif'bbox'inann]filtered_anns.extend(bbox_anns)# 处理 segmentifshow_segment:seg_anns=[annforanninannsif'segmentation'inann]filtered_anns.extend(seg_anns)# 处理 poseifshow_pose:pose_anns=[annforanninannsif'keypoints'inann]filtered_anns.extend(pose_anns)# 绘制过滤后的标注coco.showAnns(filtered_anns)plt.title(f"Image ID:{target_id}")plt.show()# 使用示例visualize_coco_annotations(ann_file="path/to/annotations.json",img_dir="path/to/images",show_bbox=True,show_segment=True,show_pose=False# 仅关闭关键点显示)

核心功能说明

  1. 动态参数控制

    • 通过show_bbox/show_segment/show_pose布尔参数精确控制三类标注的显示
    • 参数默认全开启,符合常规可视化需求
  2. 智能标注过滤

    • 根据 COCO 标注字段自动识别类型:
      • bbox: 包含bbox字段
      • segment: 包含segmentation字段(支持 RLE/多边形格式)
      • pose: 包含keypoints字段
    • 避免手动类型判断,直接通过字段存在性过滤
  3. 图像加载优化

    • 自动处理图像路径拼接
    • 支持随机图像选择(未指定img_id时)
  4. 可视化增强

    • 自动关闭坐标轴,突出标注内容
    • 添加图像 ID 标题便于定位
    • 可调节显示尺寸适应不同场景

高级用法扩展

  1. 自定义样式控制

    # 在 showAnns 前添加样式参数coco.showAnns(filtered_anns,box_color=(255,0,0),# bbox 颜色segment_color=(0,255,0),# segment 颜色keypoint_color=(0,0,255))# pose 颜色
  2. 批量处理模式

    # 遍历指定图像ID列表forimg_idintarget_ids:visualize_coco_annotations(...,img_id=img_id)
  3. 结果保存

    plt.savefig(f"visualize_{target_id}.jpg",bbox_inches='tight')

常见问题处理

  • 缺失字段处理:当某类标注不存在时,对应参数自动失效(如无分割标注时show_segment无效)
  • 坐标兼容性:自动处理 COCO 的归一化坐标(需确保图像尺寸正确)
  • 内存优化:大尺寸图像建议使用plt.close()及时释放资源

该函数完整实现了参数化控制三类标注的可视化需求,可直接集成到数据验证、模型调试等流程中,通过灵活参数配置适应不同场景的可视化需求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:37:39

艾莉丝努力练剑的256天创作纪念日:在代码星河中逐梦前行

🔥艾莉丝努力练剑:个人主页 ❄专栏传送门:《C语言》、《数据结构与算法》、C/C干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶、测试开发要点全知道 ⭐️为天地立心,为生民立命…

作者头像 李华
网站建设 2026/6/15 14:16:20

redis存储空间复杂度和时间复杂度的平衡

下面是一个案例:根据奖品概率计算奖品存储空间以及时间复杂度的权衡. 1. 内存占用的计算 1.1 不同精度下的内存占用 // 精度范围(rateRange)决定了数组大小 rateRange 10000 // 万分位 (0.0001) rateRange 100000 // 十万分位 (0.00001) r…

作者头像 李华
网站建设 2026/6/15 12:39:59

Spring循环依赖:原理、限制与解决方案深度解析

一、循环依赖的定义与本质在Spring框架中,循环依赖指的是两个或多个Bean之间存在直接或间接的相互引用关系,从而形成一个闭合的依赖环。简而言之,当BeanA依赖BeanB,同时BeanB也依赖BeanA时,便构成了典型的循环依赖。代…

作者头像 李华
网站建设 2026/6/15 16:08:40

漏洞扫描工具深度对比:Burp Suite vs. ZAP

一、工具定位与背景核心解析 1.1 Burp Suite:企业级Web安全审计标杆 开发背景:PortSwigger公司推出的商业化渗透测试套件(2003年至今) 市场定位:专业安全团队的全生命周期Web应用安全解决方案 代表用户:…

作者头像 李华