Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
af74bc3a
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
136
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
af74bc3a
编写于
3月 28, 2020
作者:
L
LaraStuStu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Create on_docker.py
上级
61314e59
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
100 addition
and
0 deletion
+100
-0
DataAnnotation/labelme/labelme/cli/on_docker.py
DataAnnotation/labelme/labelme/cli/on_docker.py
+100
-0
未找到文件。
DataAnnotation/labelme/labelme/cli/on_docker.py
0 → 100644
浏览文件 @
af74bc3a
#!/usr/bin/env python
from
__future__
import
print_function
import
argparse
import
distutils.spawn
import
json
import
os
import
os.path
as
osp
import
platform
import
shlex
import
subprocess
import
sys
def
get_ip
():
dist
=
platform
.
platform
().
split
(
'-'
)[
0
]
if
dist
==
'Linux'
:
return
''
elif
dist
==
'Darwin'
:
cmd
=
'ifconfig en0'
output
=
subprocess
.
check_output
(
shlex
.
split
(
cmd
))
if
str
!=
bytes
:
# Python3
output
=
output
.
decode
(
'utf-8'
)
for
row
in
output
.
splitlines
():
cols
=
row
.
strip
().
split
(
' '
)
if
cols
[
0
]
==
'inet'
:
ip
=
cols
[
1
]
return
ip
else
:
raise
RuntimeError
(
'No ip is found.'
)
else
:
raise
RuntimeError
(
'Unsupported platform.'
)
def
labelme_on_docker
(
in_file
,
out_file
):
ip
=
get_ip
()
cmd
=
'xhost + %s'
%
ip
subprocess
.
check_output
(
shlex
.
split
(
cmd
))
if
out_file
:
out_file
=
osp
.
abspath
(
out_file
)
if
osp
.
exists
(
out_file
):
raise
RuntimeError
(
'File exists: %s'
%
out_file
)
else
:
open
(
osp
.
abspath
(
out_file
),
'w'
)
cmd
=
'docker run -it --rm'
\
' -e DISPLAY={0}:0'
\
' -e QT_X11_NO_MITSHM=1'
\
' -v /tmp/.X11-unix:/tmp/.X11-unix'
\
' -v {1}:{2}'
\
' -w /home/developer'
in_file_a
=
osp
.
abspath
(
in_file
)
in_file_b
=
osp
.
join
(
'/home/developer'
,
osp
.
basename
(
in_file
))
cmd
=
cmd
.
format
(
ip
,
in_file_a
,
in_file_b
,
)
if
out_file
:
out_file_a
=
osp
.
abspath
(
out_file
)
out_file_b
=
osp
.
join
(
'/home/developer'
,
osp
.
basename
(
out_file
))
cmd
+=
' -v {0}:{1}'
.
format
(
out_file_a
,
out_file_b
)
cmd
+=
' wkentaro/labelme labelme {0}'
.
format
(
in_file_b
)
if
out_file
:
cmd
+=
' -O {0}'
.
format
(
out_file_b
)
subprocess
.
call
(
shlex
.
split
(
cmd
))
if
out_file
:
try
:
json
.
load
(
open
(
out_file
))
return
out_file
except
Exception
:
if
open
(
out_file
).
read
()
==
''
:
os
.
remove
(
out_file
)
raise
RuntimeError
(
'Annotation is cancelled.'
)
def
main
():
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'in_file'
,
help
=
'Input file or directory.'
)
parser
.
add_argument
(
'-O'
,
'--output'
)
args
=
parser
.
parse_args
()
if
not
distutils
.
spawn
.
find_executable
(
'docker'
):
print
(
'Please install docker'
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
try
:
out_file
=
labelme_on_docker
(
args
.
in_file
,
args
.
output
)
if
out_file
:
print
(
'Saved to: %s'
%
out_file
)
except
RuntimeError
as
e
:
sys
.
stderr
.
write
(
e
.
__str__
()
+
'
\n
'
)
sys
.
exit
(
1
)
if
__name__
==
'__main__'
:
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录