Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
waae-algorithm-tools
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
沈铭(23研)
waae-algorithm-tools
Commits
e6f2a42b
Commit
e6f2a42b
authored
Feb 25, 2025
by
沈铭(23研)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
标注工具
parent
aa927cd8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
141 additions
and
0 deletions
+141
-0
annotation_screen.py
annotation_screen.py
+76
-0
annotation_video.py
annotation_video.py
+65
-0
华文仿宋.ttf
华文仿宋.ttf
+0
-0
No files found.
annotation_screen.py
0 → 100644
View file @
e6f2a42b
import
argparse
import
json
import
os
from
PIL
import
Image
,
ImageDraw
,
ImageFont
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--json_path'
,
type
=
str
,
required
=
True
,
help
=
'report.json的路径'
)
# 解析命令行参数
args
=
parser
.
parse_args
()
def
main
():
rule_name_example
=
[
"验证码"
,
"非文本链接"
,
"非文本控件"
,
"多媒体"
,
"功能性组件访问"
,
"装饰性内容访问"
,
"非装饰性组件"
,
"漂浮窗"
,
"闪光"
,
"焦点顺序"
,
"错误原因提示"
,
"验证码"
,
"浮窗"
]
print
(
'条目名称示例:'
+
','
.
join
(
rule_name_example
))
rules_select_input
=
input
(
"请输入你要检测的条目名称,用英文逗号分隔:"
)
selected_rules
=
rules_select_input
.
split
(
','
)
print
(
'条目名称识别结果:'
,
selected_rules
)
json_path
=
args
.
json_path
print
(
json_path
)
output_image_path
=
os
.
path
.
join
(
os
.
path
.
curdir
,
'temp.png'
)
# json_path = "app_report.json"
with
open
(
json_path
,
'r'
)
as
f
:
data
=
json
.
load
(
f
)
for
item
in
data
:
page
=
data
[
item
]
img_name
=
page
[
"图片名"
]
img_path
=
page
[
"原始绝对路径"
]
all_rules
=
page
[
"所有条目"
]
all_check_result
=
page
[
"通过情况"
]
for
rule_id
,
rule
in
enumerate
(
all_rules
):
if
rule
in
selected_rules
:
user_input
=
input
(
"请输入 'n' 继续遍历下一个,输入 'c' 结束遍历: "
)
if
user_input
==
'c'
:
print
(
"程序已结束。"
)
return
0
elif
user_input
==
'n'
:
# 获取当前键值对
value
=
all_check_result
[
rule_id
]
img
=
Image
.
open
(
img_path
)
width
,
height
=
img
.
size
draw
=
ImageDraw
.
Draw
(
img
)
# font = ImageFont.load_default()
font_path
=
"华文仿宋.ttf"
# 替换为实际字体文件路径
font_size
=
width
/
20
# 设定字体大小
font
=
ImageFont
.
truetype
(
font_path
,
font_size
)
# draw.text((0,0), img_path, fill=(255,0,0),font=font)
print
(
f
'当前展示图片:{img_name}'
)
print
(
f
'当前展示图片原始路径:{img_path}'
)
if
value
:
draw
.
text
((
0
,
0
),
all_rules
[
rule_id
]
+
": 不通过"
,
fill
=
(
255
,
0
,
0
),
font
=
font
)
else
:
draw
.
text
((
0
,
0
),
all_rules
[
rule_id
]
+
": 通过"
,
fill
=
(
255
,
0
,
0
),
font
=
font
)
img
.
save
(
output_image_path
)
print
(
f
"已将检测结果展示在 {output_image_path}"
)
else
:
print
(
"输入无效,请输入 'n' 或 'c'。"
)
if
__name__
==
"__main__"
:
main
()
\ No newline at end of file
annotation_video.py
0 → 100644
View file @
e6f2a42b
import
argparse
import
json
import
os
import
pandas
as
pd
import
shutil
from
PIL
import
Image
,
ImageDraw
,
ImageFont
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--task_root_dir'
,
type
=
str
,
required
=
True
,
help
=
'待检测任务的根目录'
)
# 解析命令行参数
args
=
parser
.
parse_args
()
def
generate_excel
(
video_report_list
):
rule_header
=
None
rule_rows
=
[]
page_name
=
[]
for
report
in
video_report_list
:
data
=
json
.
load
(
open
(
report
,
'r'
))
for
page
in
data
:
page
=
data
[
page
]
video_path
=
page
[
"合成视频路径"
]
if
rule_header
is
None
:
rule_header
=
page
[
"判断条目"
]
result
=
page
[
"通过情况"
]
page_name
.
append
(
os
.
path
.
splitext
(
os
.
path
.
basename
(
video_path
))[
0
])
rule_rows
.
append
(
result
)
df
=
pd
.
DataFrame
(
rule_rows
,
columns
=
rule_header
)
new_df
=
pd
.
DataFrame
()
for
col
in
df
.
columns
:
new_df
[
f
'{col}_预测'
]
=
df
[
col
]
new_df
[
f
'{col}_真实'
]
=
None
new_df
.
insert
(
0
,
'页面编号'
,
page_name
)
new_df
.
to_excel
(
'app_video_report.xlsx'
,
index
=
False
)
def
run
(
task_root_dir
):
video_report_list
=
[
os
.
path
.
join
(
task_root_dir
,
task
,
'app_video_report.json'
)
for
task
in
os
.
listdir
(
task_root_dir
)]
generate_excel
(
video_report_list
)
output_img_path
=
'temp.mp4'
for
report
in
video_report_list
:
data
=
json
.
load
(
open
(
report
,
'r'
))
for
page
in
data
:
page
=
data
[
page
]
video_path
=
page
[
"合成视频路径"
]
shutil
.
copy
(
os
.
path
.
join
(
task_root_dir
,
video_path
),
output_img_path
)
rule_header
=
page
[
"判断条目"
]
result
=
page
[
"通过情况"
]
result_map
=
[[
rule_header
[
i
],
result
[
i
]]
for
i
in
range
(
len
(
rule_header
))]
user_input
=
input
(
"请输入 'n' 继续遍历下一个,输入 'c' 结束遍历: "
)
if
user_input
==
'c'
:
print
(
"程序已结束。"
)
return
0
elif
user_input
==
'n'
:
print
(
f
"视频展示在: {output_img_path}"
)
print
(
f
"原视频地址: {video_path}"
)
print
(
f
"该视频对应检测结果: {result_map}"
)
else
:
print
(
"输入无效,请输入 'n' 或 'c'。"
)
if
__name__
==
"__main__"
:
task_root_dir
=
args
.
task_root_dir
run
(
task_root_dir
)
\ No newline at end of file
华文仿宋.ttf
0 → 100644
View file @
e6f2a42b
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment