Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleSeg
提交
b549c36d
P
PaddleSeg
项目概览
PaddlePaddle
/
PaddleSeg
通知
286
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
53
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleSeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
53
Issue
53
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
b549c36d
编写于
9月 10, 2019
作者:
L
LutaoChu
提交者:
GitHub
9月 10, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add files via upload
上级
4efd42b3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
110 addition
and
0 deletion
+110
-0
docs/annotation/jingling2seg.py
docs/annotation/jingling2seg.py
+110
-0
未找到文件。
docs/annotation/jingling2seg.py
0 → 100644
浏览文件 @
b549c36d
#!/usr/bin/env python
from
__future__
import
print_function
import
argparse
import
glob
import
json
import
os
import
os.path
as
osp
import
sys
import
numpy
as
np
import
PIL.Image
import
labelme
def
main
():
parser
=
argparse
.
ArgumentParser
(
formatter_class
=
argparse
.
ArgumentDefaultsHelpFormatter
)
parser
.
add_argument
(
'label_dir'
,
help
=
'input annotated directory'
)
parser
.
add_argument
(
'output_dir'
,
help
=
'output dataset directory'
)
args
=
parser
.
parse_args
()
if
osp
.
exists
(
args
.
output_dir
):
print
(
'Output directory already exists:'
,
args
.
output_dir
)
sys
.
exit
(
1
)
os
.
makedirs
(
args
.
output_dir
)
os
.
makedirs
(
osp
.
join
(
args
.
output_dir
,
'JPEGImages'
))
os
.
makedirs
(
osp
.
join
(
args
.
output_dir
,
'SegmentationClassPNG'
))
print
(
'Creating dataset:'
,
args
.
output_dir
)
# get the all class names for the given dataset
class_names
=
[
'_background_'
]
for
label_file
in
glob
.
glob
(
osp
.
join
(
args
.
label_dir
,
'*.json'
)):
with
open
(
label_file
)
as
f
:
data
=
json
.
load
(
f
)
if
data
[
'outputs'
]:
for
output
in
data
[
'outputs'
][
'object'
]:
name
=
output
[
'name'
]
cls_name
=
name
if
not
cls_name
in
class_names
:
class_names
.
append
(
cls_name
)
class_name_to_id
=
{}
for
i
,
class_name
in
enumerate
(
class_names
):
class_id
=
i
# starts with 0
class_name_to_id
[
class_name
]
=
class_id
if
class_id
==
0
:
assert
class_name
==
'_background_'
class_names
=
tuple
(
class_names
)
print
(
'class_names:'
,
class_names
)
out_class_names_file
=
osp
.
join
(
args
.
output_dir
,
'class_names.txt'
)
with
open
(
out_class_names_file
,
'w'
)
as
f
:
f
.
writelines
(
'
\n
'
.
join
(
class_names
))
print
(
'Saved class_names:'
,
out_class_names_file
)
for
label_file
in
glob
.
glob
(
osp
.
join
(
args
.
label_dir
,
'*.json'
)):
print
(
'Generating dataset from:'
,
label_file
)
with
open
(
label_file
)
as
f
:
base
=
osp
.
splitext
(
osp
.
basename
(
label_file
))[
0
]
out_img_file
=
osp
.
join
(
args
.
output_dir
,
'JPEGImages'
,
base
+
'.jpg'
)
out_png_file
=
osp
.
join
(
args
.
output_dir
,
'SegmentationClassPNG'
,
base
+
'.png'
)
data
=
json
.
load
(
f
)
data_shapes
=
[]
if
data
[
'outputs'
]:
for
output
in
data
[
'outputs'
][
'object'
]:
if
'polygon'
in
output
.
keys
():
polygon
=
output
[
'polygon'
]
name
=
output
[
'name'
]
# convert jingling format to labelme format
points
=
[]
for
i
in
range
(
1
,
int
(
len
(
polygon
)
/
2
)
+
1
):
points
.
append
([
polygon
[
'x'
+
str
(
i
)],
polygon
[
'y'
+
str
(
i
)]])
shape
=
{
'label'
:
name
,
'points'
:
points
,
'shape_type'
:
'polygon'
}
data_shapes
.
append
(
shape
)
img_file
=
osp
.
join
(
osp
.
dirname
(
label_file
),
data
[
'path'
])
img
=
np
.
asarray
(
PIL
.
Image
.
open
(
img_file
))
PIL
.
Image
.
fromarray
(
img
).
save
(
out_img_file
)
lbl
=
labelme
.
utils
.
shapes_to_label
(
img_shape
=
img
.
shape
,
shapes
=
data_shapes
,
label_name_to_value
=
class_name_to_id
,
)
if
osp
.
splitext
(
out_png_file
)[
1
]
!=
'.png'
:
out_png_file
+=
'.png'
# Assume label ranses [0, 255] for uint8,
if
lbl
.
min
()
>=
0
and
lbl
.
max
()
<=
255
:
lbl_pil
=
PIL
.
Image
.
fromarray
(
lbl
.
astype
(
np
.
uint8
),
mode
=
'L'
)
lbl_pil
.
save
(
out_png_file
)
else
:
raise
ValueError
(
'[%s] Cannot save the pixel-wise class label as PNG. '
'Please consider using the .npy format.'
%
out_png_file
)
if
__name__
==
'__main__'
:
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录