labelme标注结果可视化(持续补充)

        图像数据常用的标注工具是labelme,标注的格式是json。labelme标注结果可视化,是将标注结果绘制到原始图像上,以方便查看标注结果。

1 json文件读取与保存

        由于labelme标注的保存格式为json,所以必须掌握json文件的读取与保存。

import json
#json文件读取
anno= json.load(open("test.json", "r", encoding="utf-8"))
#json文件保存
with open('test.json', 'w') as f:
    json.dump(ann, f)

2 opencv中文路径读写

        opencv默认的cv2.imwrite()和cv2.imread()函数是不支持中文路径的。

import os
import cv2
from pathlib import Path

#支持中文路径读取图片
def cv_imread(filePath):
    cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
    cv_img = cv2.cvtColor(cv_img, cv2.COLOR_RGB2BGR)
    return cv_img

#支持中文路径存储图片
cv2.imencode('.png', image)[1].tofile(save_dir+image_path)

3 矩形rectangle目标可视化

        定义线line目标可视化函数为vis_labelme_line_label。label_dir为labelme标注文件和原始图片存储目录,save_dir为可视化图片保存的文件目录。

import os
import cv2
from pathlib import Path

#支持中文路径
def cv_imread(filePath):
    cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
    cv_img = cv2.cvtColor(cv_img, cv2.COLOR_RGB2BGR)
    return cv_img

def vis_labelme_rect_label(label_dir, save_dir='res/'):
    label_dir = str(Path(label_dir)) + '/'
    save_dir  = str(Path(save_dir))  + '/'
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    label_files = glob(label_dir+'*.json')
    for label_file in label_files:
        anno= json.load(open(label_file, "r", encoding="utf-8"))
        image_path = anno['imagePath']
        image = cv_imread(label_dir+image_path)
        shapes = anno['shapes']
        for s in shapes:
            pts = np.array(s['points']).astype(np.int)
            x1  = min(pts[:, 0])
            y1  = min(pts[:, 1])
            x2  = max(pts[:, 0])
            y2  = max(pts[:, 1])
            cv2.rectangle(image, (x1, y1), (x2, y2), (255, 0, 255), 1)
        cv2.imencode('.png', image)[1].tofile(save_dir+image_path)

4 线line目标可视化

        定义线line目标可视化函数为vis_labelme_line_label。label_dir为labelme标注文件和原始图片存储目录,save_dir为可视化图片保存的文件目录。

import os
import cv2
from pathlib import Path

#支持中文路径
def cv_imread(filePath):
    cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
    cv_img = cv2.cvtColor(cv_img, cv2.COLOR_RGB2BGR)
    return cv_img

def vis_labelme_line_label(label_dir, save_dir='res/'):
    label_dir = str(Path(label_dir)) + '/'
    save_dir  = str(Path(save_dir))  + '/'
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    label_files = glob(label_dir+'*.json')
    for label_file in label_files:
        anno= json.load(open(label_file, "r", encoding="utf-8"))
        image_path = anno['imagePath']
        image = cv_imread(label_dir+image_path)
        shapes = anno['shapes']
        for s in shapes:
            pts = s['points']
            x1, y1 = pts[0]
            x2, y2 = pts[1]
            cv2.line(image, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 255), 1)
        cv2.imencode('.png', image)[1].tofile(save_dir+image_path)

【python三维深度学习】python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_三维点云深度学习

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Labelme是一种非常流行的图像标注工具,它可以用于图像分割任务。在Labelme中,我们可以为图像中的不同类别分配不同的颜色,以便更好地区分它们。 首先,我们需要确保已经安装了Labelme软件,并且已经准备好了需要标注的图像。 打开Labelme后,我们可以在界面的左上方找到一排工具栏。点击工具栏上的"Create Polygons"按钮,然后将鼠标移到图像上,我们可以看到鼠标变为十字光标。 我们需要在图像上用鼠标点击来创建一个多边形框,以框出我们想要打标签的区域。当创建完一个多边形后,我们可以使用Shift键来创建更多的多边形。创建完所有的多边形之后,可以通过按ESC键或右键单击来完成标注。 接下来,我们可以在界面的右上方看到一个面板,其中有一个类别列表。我们可以为每个类别指定一个唯一的名称,并将其与一个特定的颜色绑定。 在类别列表中,我们可以选择一个类别,并在图像上点击我们想要标注的区域。在每个类别下,我们可以继续创建并标注新的多边形。 当我们完成所有的标注后,可以将结果保JSON文件。这个JSON文件将包含我们标注的图像的所有信息,包括每个类别的名称、颜色和多边形的坐标。 在以后的任务中,我们可以使用这个JSON文件来加载图像和标注信息,以便进行进一步的处理和分析。 总之,使用Labelme进行图像分割标注时,我们可以为不同的类别分配不同的颜色,以帮助我们更好地区分它们。这种方式可以使得标注结果更加直观和易于理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding的叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值