最近在使用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