Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不会修仙的道士
labelme
提交
28b3923d
L
labelme
项目概览
不会修仙的道士
/
labelme
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
labelme
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
28b3923d
编写于
4月 01, 2018
作者:
K
Kentaro Wada
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge semantic_segmentation contrib
上级
b0235b64
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
76 deletion
+25
-76
examples/semantic_segmentation/labelme2voc.py
examples/semantic_segmentation/labelme2voc.py
+3
-65
labelme/utils.py
labelme/utils.py
+22
-11
未找到文件。
examples/semantic_segmentation/labelme2voc.py
浏览文件 @
28b3923d
...
...
@@ -24,69 +24,6 @@ from labelme.utils import label2rgb
from
labelme.utils
import
label_colormap
# TODO(wkentaro): Move to labelme/utils.py
# contrib
# -----------------------------------------------------------------------------
def
labelme_shapes_to_label
(
img_shape
,
shapes
,
label_name_to_value
):
lbl
=
np
.
zeros
(
img_shape
[:
2
],
dtype
=
np
.
int32
)
for
shape
in
shapes
:
polygons
=
shape
[
'points'
]
label_name
=
shape
[
'label'
]
if
label_name
in
label_name_to_value
:
label_value
=
label_name_to_value
[
label_name
]
else
:
label_value
=
len
(
label_name_to_value
)
label_name_to_value
[
label_name
]
=
label_value
mask
=
labelme
.
utils
.
polygons_to_mask
(
img_shape
[:
2
],
polygons
)
lbl
[
mask
]
=
label_value
return
lbl
def
draw_label
(
label
,
img
,
label_names
,
colormap
=
None
):
plt
.
subplots_adjust
(
left
=
0
,
right
=
1
,
top
=
1
,
bottom
=
0
,
wspace
=
0
,
hspace
=
0
)
plt
.
margins
(
0
,
0
)
plt
.
gca
().
xaxis
.
set_major_locator
(
plt
.
NullLocator
())
plt
.
gca
().
yaxis
.
set_major_locator
(
plt
.
NullLocator
())
if
colormap
is
None
:
colormap
=
label_colormap
(
len
(
label_names
))
label_viz
=
label2rgb
(
label
,
img
,
n_labels
=
len
(
label_names
),
alpha
=
.
5
)
plt
.
imshow
(
label_viz
)
plt
.
axis
(
'off'
)
plt_handlers
=
[]
plt_titles
=
[]
for
label_value
,
label_name
in
enumerate
(
label_names
):
if
label_value
not
in
label
:
continue
if
label_name
.
startswith
(
'_'
):
continue
fc
=
colormap
[
label_value
]
p
=
plt
.
Rectangle
((
0
,
0
),
1
,
1
,
fc
=
fc
)
plt_handlers
.
append
(
p
)
plt_titles
.
append
(
label_name
)
plt
.
legend
(
plt_handlers
,
plt_titles
,
loc
=
'lower right'
,
framealpha
=
.
5
)
f
=
io
.
BytesIO
()
plt
.
savefig
(
f
,
bbox_inches
=
'tight'
,
pad_inches
=
0
)
plt
.
cla
()
plt
.
close
()
out_size
=
(
img
.
shape
[
1
],
img
.
shape
[
0
])
out
=
PIL
.
Image
.
open
(
f
).
resize
(
out_size
,
PIL
.
Image
.
BILINEAR
).
convert
(
'RGB'
)
out
=
np
.
asarray
(
out
)
return
out
# -----------------------------------------------------------------------------
def
main
():
parser
=
argparse
.
ArgumentParser
(
formatter_class
=
argparse
.
ArgumentDefaultsHelpFormatter
)
...
...
@@ -142,18 +79,19 @@ def main():
img
=
skimage
.
io
.
imread
(
img_file
)
skimage
.
io
.
imsave
(
out_img_file
,
img
)
lbl
=
labelme
_
shapes_to_label
(
lbl
=
labelme
.
utils
.
shapes_to_label
(
img_shape
=
img
.
shape
,
shapes
=
data
[
'shapes'
],
label_name_to_value
=
class_name_to_id
,
)
lbl_pil
=
PIL
.
Image
.
fromarray
(
lbl
)
# Only works with uint8 label
# lbl_pil = PIL.Image.fromarray(lbl, mode='P')
# lbl_pil.putpalette((colormap * 255).flatten())
lbl_pil
.
save
(
out_lbl_file
)
viz
=
draw_label
(
viz
=
labelme
.
utils
.
draw_label
(
lbl
,
img
,
class_names
,
colormap
=
colormap
)
skimage
.
io
.
imsave
(
out_viz_file
,
viz
)
...
...
labelme/utils.py
浏览文件 @
28b3923d
...
...
@@ -95,6 +95,10 @@ def draw_label(label, img, label_names, colormap=None):
plt_handlers
=
[]
plt_titles
=
[]
for
label_value
,
label_name
in
enumerate
(
label_names
):
if
label_value
not
in
label
:
continue
if
label_name
.
startswith
(
'_'
):
continue
fc
=
colormap
[
label_value
]
p
=
plt
.
Rectangle
((
0
,
0
),
1
,
1
,
fc
=
fc
)
plt_handlers
.
append
(
p
)
...
...
@@ -114,22 +118,29 @@ def draw_label(label, img, label_names, colormap=None):
return
out
def
labelme_shapes_to_label
(
img_shape
,
shapes
):
label_name_to_val
=
{
'background'
:
0
}
def
shapes_to_label
(
img_shape
,
shapes
,
label_name_to_value
,
type
=
'class'
):
lbl
=
np
.
zeros
(
img_shape
[:
2
],
dtype
=
np
.
int32
)
for
shape
in
shapes
:
polygons
=
shape
[
'points'
]
label_name
=
shape
[
'label'
]
if
label_name
in
label_name_to_val
:
label_value
=
label_name_to_val
[
label_name
]
else
:
label_value
=
len
(
label_name_to_val
)
label_name_to_val
[
label_name
]
=
label_value
label_value
=
label_name_to_value
[
label_name
]
mask
=
polygons_to_mask
(
img_shape
[:
2
],
polygons
)
lbl
[
mask
]
=
label_value
return
lbl
def
labelme_shapes_to_label
(
img_shape
,
shapes
):
warnings
.
warn
(
'labelme_shapes_to_label is deprecated, so please use '
'shapes_to_label.'
)
lbl_names
=
[
None
]
*
(
max
(
label_name_to_val
.
values
())
+
1
)
for
label_name
,
label_value
in
label_name_to_val
.
items
():
lbl_names
[
label_value
]
=
label_name
label_name_to_value
=
{}
for
shape
in
shapes
:
label_name
=
shape
[
'label'
]
if
label_name
in
label_name_to_value
:
label_value
=
label_name_to_value
[
label_name
]
else
:
label_value
=
len
(
label_name_to_value
)
label_name_to_value
[
label_name
]
=
label_value
return
lbl
,
lbl_names
lbl
=
shapes_to_label
(
img_shape
,
shapes
,
label_name_to_value
)
return
lbl
,
label_name_to_value
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录