labelme标注不同物体显示不同颜色以及批量转换

该博客介绍了如何修改labelme软件,使其支持自定义标注颜色,并详细说明了如何批量将json标注文件转换为图像数据集。通过修改labelme的label.py和json_to_dataset.py文件,实现了对不同类别赋予特定RGB值,并提供了批量转换的步骤和注意事项,包括可能出现的版本兼容问题。

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

最近在使用labelme标注数据时遇到一些问题:
在这里插入图片描述
如上图中,蓝色分别为crack,person,dog三类。正常应该是3种不同颜色

解决方案:

1.labelme版本

在这里插入图片描述

2、下载labelme后进行文件修改

由于博主想要的是rgb三通道的彩色图,所以标注出的是三通道的rgb值。
因此本教程适合想要标注的物体是彩色图案的读者,不是灰度图。

2.1 label.py文件的修改

#博主的参考路径为:
C:\ProgramData\Anaconda3\envs\labelme\Lib\site-packages\imgviz

修改内容如下:

import numpy as np

from . import color as color_module
from . import draw as draw_module


def label_colormap(n_label=256, value=None):
    """Label colormap.

    Parameters
    ----------
    n_labels: int
        Number of labels (default: 256).
    value: float or int
        Value scale or value of label color in HSV space.

    Returns
    -------
    cmap: numpy.ndarray, (N, 3), numpy.uint8
        Label id to colormap.

    """

    def bitget(byteval, idx):
        return (byteval & (1 << idx)) != 0

    cmap = np.zeros((n_label, 3), dtype=np.uint8)
    for i in range(0, n_label):
        id = i
        r, g, b = 0, 0, 0
        for j in range(0, 8):
            r = np.bitwise_or(r, (bitget(id, 0) << 7 - j))
            g = np.bitwise_or(g, (bitget(id, 1) << 7 - j))
            b = np.bitwise_or(b, (bitget(id, 2) << 7 - j))
            id = id >> 3
        cmap[i, 0] = r
        cmap[i, 1] = g
        cmap[i, 2] = b
        
    #我认为添加的一段,自己设置不同类别的rgb值
    cmap[0,:] = [255,255,255] #背景的rgb值
    cmap[1,:] = [255,0,0] #车的rgb
    cmap[2,:] = [0,255,0] #人的rgb

    if value is not None:
        hsv = color_module.rgb2hsv(cmap.reshape(1, -1, 3))
        if isinstance(value, float):
            hsv[:, 1:, 2] = hsv[:, 1:, 2].astype(float) * value
        else:
            assert isinstance(value, int)
            hsv[:, 1:, 2] = value
        cmap = colo
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值