工程系-labelme如何查看数据

本文详细介绍了如何使用Python解析labelme生成的JSON文件,提取关键信息如图像数据、对象标签和边界点,以及如何将这些信息可视化。通过具体代码示例,展示了如何处理和解析复杂的标注数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过labelme进行标签后,我们有时候只需要json中的一部分,所以只能按需提取。

分析json文件

{
  "imageData": "something too long", # 原图像数据 通过该字段可以解析出原图像数据
  "shapes": [ # 每个对象的形状
    { # 第一个对象
      "points": [ # 边缘是由点构成,将这些点连在一起就是对象的边缘多边形
        [
          165.90909090909093, # 第一个点 x 坐标
          36.909090909090935  # 第一个点 y 坐标
        ],
        ……
        [
          240.90909090909093,
          15.909090909090935
        ],
        [
          216.90909090909093, # 最后一个点 会闭合到第一个点完成封闭的多边形 x 坐标
          31.909090909090935 # y 坐标
        ]
      ],
      "fill_color": null,
      "label": "cat_1",  # 第一个对象的标签
      "line_color": null
    },
    {  # 第二个对象
      "points": [
        [
          280.90909090909093,
          31.909090909090935
        ],
        ……
        [
          362.90909090909093,
          20.909090909090935
        ],
        [
          339.90909090909093,
          32.909090909090935
        ]
      ],
      "fill_color": null,
      "label": "cat_2", # 第二个对象的标签
      "line_color": null
    }
  ],
  "fillColor": [
    255,
    0,
    0,
    128
  ],
  "imagePath": "/home/wu/1.jpg", # 原始图片的路径
  "lineColor": [
    0,
    255,
    0,
    128
  ]
}

通过json文件提取信息

# -*- coding:utf-8 -*-
#!/usr/bin/env python

import argparse
import json
import matplotlib.pyplot as plt

from labelme import utils


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('json_file')
    args = parser.parse_args()

    json_file = args.json_file

    data = json.load(open(json_file)) # 加载json文件

    img = utils.img_b64_to_array(data['imageData']) # 解析原图片数据
    lbl, lbl_names = utils.labelme_shapes_to_label(img.shape, data['shapes']) # 解析'shapes'中的字段信息,解析出每个对象的mask与对应的label   lbl存储 mask,lbl_names 存储对应的label
    # lal 像素取值 0、1、2 其中0对应背景,1对应第一个对象,2对应第二个对象
    # 使用该方法取出每个对象的mask mask=[] mask.append((lbl==1).astype(np.uint8)) # 解析出像素值为1的对象,对应第一个对象 mask 为0、1组成的(0为背景,1为对象)
    # lbl_names  ['background','cat_1','cat_2']

    captions = ['%d: %s' % (l, name) for l, name in enumerate(lbl_names)]
    lbl_viz = utils.draw_label(lbl, img, captions)

    plt.subplot(121)
    plt.imshow(img)
    plt.subplot(122)
    plt.imshow(lbl_viz)
    plt.show()


if __name__ == '__main__':
    main()
 
''' 其他
data['imageData'] # 原图数据 str
data['shapes'] # 每个对像mask及label  list
len(data['shapes']) # 返回对象个数 int
data['shapes'][0]['label'] # 返回第一个对象的标签 str
data['shapes'][0]['points'] # 返回第一个对象的边界点 list
data['shapes'][0]['points'][0] # 返回第一个对象的边界点第一个点 list

data['imagePath'] # 原图路径 str
data['fillColor'] # 填充颜色(边界内部) list
data['lineColor'] # 边界线颜色  list
'''

转自:https://github.com/wucng/TensorExpand/tree/master/TensorExpand/Object%20detection/Data_interface/Labelme

### wkentaro Labelme 使用说明 #### 安装与配置 为了在Ubuntu 16.04上安装Labelme,推荐的方法之一是通过Anaconda来管理Python环境以及依赖项。这不仅简化了安装过程,还使得不同版本间的切换更加容易[^1]。 对于Linux系统的安装指南指出,在开始之前应该先下载并设置好Anaconda环境。接着可以利用`conda`命令创建一个新的虚拟环境专门用于Labelme项目,并激活此环境: ```bash conda create -n labelme_env python=3.7 conda activate labelme_env ``` 之后便可以在新环境中按照官方文档指示进行进一步操作,比如直接从GitHub仓库克隆最新源码或是使用pip工具安装发布版包: ```bash git clone https://github.com/wkentaro/labelme.git cd labelme pip install . ``` 另一种方式则是借助Docker容器化平台一键部署包含预设参数在内的完整运行时镜像,这对于希望减少本地开发机污染的用户来说尤为方便。 #### 功能特性概述 Labelme是一款由wkentaro开发的支持多种图形绘制模式(多边形、矩形等)的人工智能训练数据标记工具。它允许使用者轻松地为图片添加像素级精确度的对象实例掩膜,从而满足计算机视觉领域内诸如语义分割任务的需求[^2]。 当启动应用程序后,默认会展示一个简洁直观的操作面板,其中包含了文件加载区、绘图区域及属性编辑栏三个主要部分。用户可以通过界面上方菜单条访问更多高级选项,例如调整画笔大小、颜色选取器等功能按钮;而左侧列表则用来显示当前工作目录下的所有待处理素材概览。 #### 实际应用案例 假设现在有一个场景识别模型正在筹备阶段,那么就可以运用Labelme来进行前期准备工作——即针对特定类别目标实施精细到单个像素级别的轮廓勾勒作业。具体流程如下所示: - 打开软件主窗口; - 导入一批原始JPEG格式照片作为样本集合; - 利用手动描绘的方式逐一界定出各个物体边界范围; - 将最终成果导出成JSON结构化的元数据描述文件以便后续程序读取解析。 此外还有配套脚本可以帮助实现批量转换功能,即将标注结果保存下来的`.json`记录转变为可供机器学习框架直接调用的标准输入形式,如PNG图像蒙板等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值