当前位置: 首页 > news >正文

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()及时释放资源

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

http://www.jsqmd.com/news/211435/

相关文章:

  • 深度测评9个AI论文工具,助本科生轻松搞定毕业论文!
  • 2025 Java 转网安必看:从技能迁移到岗位选择,附 40-150 万安全岗薪资拆解!
  • 从0到1讲解什么是JVM:Java程序员必须掌握的核心知识(附Spring Boot实战案例)
  • 满足成本与性能双重要求:AWS中为访问私有子网EC2的Lambda实施优化方案
  • 网安小白狂喜!Web 安全入门指南:OWASP Top 10 + 漏洞实战,收藏这篇就够了!
  • Spring循环依赖:原理、限制与解决方案深度解析
  • 想做项目经理之前,这几件事你最好先想清楚
  • 并发编程中的CAS机制:原理、实现与应用剖析
  • 挖到宝了!专本科网安自学指南:不看学历,少走 2 年弯路,评论区蹲资料的来!
  • 进程的创建——如何理解fork()系统调用
  • 互斥信号量详解
  • 进程的创建——彻底搞懂fork()的好兄弟 execve()
  • 视频太大发不出去?教你3招“无损”压缩,内存省一半,画质不打折!
  • 别只盯着To C了!李开复最新预言:AI Agent的终极战场在To B,搞错方向就完了!
  • 别再挨个翻了!今日 arXiv 精选:多模态大模型+图像生成篇,一张海报看懂未来!
  • 更新:2025年5月-企业互联网数据中心相关数据
  • 漏洞扫描工具深度对比:Burp Suite vs. ZAP
  • 导师推荐9个AI论文写作软件,自考毕业论文轻松搞定!
  • 2026 网络安全行业深度解读:行业前景、入门路线与系统学习手册
  • 如何实施DevSecOps中的安全测试?
  • 【AI背景下后端程序员】核心综合能力、基础技术、AI适配、工程化架构、数据处理、软技能
  • vscode修改背景颜色为白色或者黑色-简单
  • AI 终于有了“人眼”?达摩院 NeurIPS’25 重磅:第一视角下的动态时空认知,大模型能打几分?
  • CTF 新手想入门上分?抓好这几个关键点就够了
  • 【AI革命】一个模型顶仨!80亿参数Omni实现文本、图像、音频统一处理,大模型开发新思路!
  • 【MATLAB例程】【空地协同】UAV辅助的UGV协同定位,无人机辅助地面无人车定位,带滤波,附MATLAB代码下载链接
  • 基于Cruise2019版及Matlab2018a的燃料电池功率跟随仿真模型探究及实践
  • 把设备参数翻译成老板听得懂的“利润语言”
  • springboot+vue的舞蹈文化中心平台设计与实现_95quaxsf
  • ‌安全自动化框架构建方法