Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
lishj6
Sparsedrive
Commits
afe88104
Commit
afe88104
authored
Sep 05, 2025
by
lishj6
🏸
Browse files
init0905
parent
a48c4071
Changes
101
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
110 additions
and
0 deletions
+110
-0
tools/visualization/visualize.py
tools/visualization/visualize.py
+110
-0
No files found.
tools/visualization/visualize.py
0 → 100644
View file @
afe88104
import
os
import
glob
import
argparse
from
tqdm
import
tqdm
import
cv2
import
numpy
as
np
from
PIL
import
Image
import
mmcv
from
mmcv
import
Config
from
mmdet.datasets
import
build_dataset
from
tools.visualization.bev_render
import
BEVRender
from
tools.visualization.cam_render
import
CamRender
plot_choices
=
dict
(
draw_pred
=
True
,
# True: draw gt and pred; False: only draw gt
det
=
True
,
track
=
True
,
# True: draw history tracked boxes
motion
=
True
,
map
=
True
,
planning
=
True
,
)
START
=
0
END
=
81
INTERVAL
=
1
class
Visualizer
:
def
__init__
(
self
,
args
,
plot_choices
,
):
self
.
out_dir
=
args
.
out_dir
self
.
combine_dir
=
os
.
path
.
join
(
self
.
out_dir
,
'combine'
)
os
.
makedirs
(
self
.
combine_dir
,
exist_ok
=
True
)
cfg
=
Config
.
fromfile
(
args
.
config
)
self
.
dataset
=
build_dataset
(
cfg
.
data
.
val
)
self
.
results
=
mmcv
.
load
(
args
.
result_path
)
self
.
bev_render
=
BEVRender
(
plot_choices
,
self
.
out_dir
)
self
.
cam_render
=
CamRender
(
plot_choices
,
self
.
out_dir
)
def
add_vis
(
self
,
index
):
data
=
self
.
dataset
.
get_data_info
(
index
)
result
=
self
.
results
[
index
][
'img_bbox'
]
bev_gt_path
,
bev_pred_path
=
self
.
bev_render
.
render
(
data
,
result
,
index
)
cam_pred_path
=
self
.
cam_render
.
render
(
data
,
result
,
index
)
self
.
combine
(
bev_gt_path
,
bev_pred_path
,
cam_pred_path
,
index
)
def
combine
(
self
,
bev_gt_path
,
bev_pred_path
,
cam_pred_path
,
index
):
bev_gt
=
cv2
.
imread
(
bev_gt_path
)
bev_image
=
cv2
.
imread
(
bev_pred_path
)
cam_image
=
cv2
.
imread
(
cam_pred_path
)
merge_image
=
cv2
.
hconcat
([
cam_image
,
bev_image
,
bev_gt
])
save_path
=
os
.
path
.
join
(
self
.
combine_dir
,
str
(
index
).
zfill
(
4
)
+
'.jpg'
)
cv2
.
imwrite
(
save_path
,
merge_image
)
def
image2video
(
self
,
fps
=
12
,
downsample
=
4
):
imgs_path
=
glob
.
glob
(
os
.
path
.
join
(
self
.
combine_dir
,
'*.jpg'
))
imgs_path
=
sorted
(
imgs_path
)
img_array
=
[]
for
img_path
in
tqdm
(
imgs_path
):
img
=
cv2
.
imread
(
img_path
)
height
,
width
,
channel
=
img
.
shape
img
=
cv2
.
resize
(
img
,
(
width
//
downsample
,
height
//
downsample
),
interpolation
=
cv2
.
INTER_AREA
)
height
,
width
,
channel
=
img
.
shape
size
=
(
width
,
height
)
img_array
.
append
(
img
)
out_path
=
os
.
path
.
join
(
self
.
out_dir
,
'video.mp4'
)
out
=
cv2
.
VideoWriter
(
out_path
,
cv2
.
VideoWriter_fourcc
(
*
'mp4v'
),
fps
,
size
)
for
i
in
range
(
len
(
img_array
)):
out
.
write
(
img_array
[
i
])
out
.
release
()
def
parse_args
():
parser
=
argparse
.
ArgumentParser
(
description
=
'Visualize groundtruth and results'
)
parser
.
add_argument
(
'config'
,
help
=
'config file path'
)
parser
.
add_argument
(
'--result-path'
,
default
=
None
,
help
=
'prediction result to visualize'
'If submission file is not provided, only gt will be visualized'
)
parser
.
add_argument
(
'--out-dir'
,
default
=
'vis'
,
help
=
'directory where visualize results will be saved'
)
args
=
parser
.
parse_args
()
return
args
def
main
():
args
=
parse_args
()
visualizer
=
Visualizer
(
args
,
plot_choices
)
for
idx
in
tqdm
(
range
(
START
,
END
,
INTERVAL
)):
if
idx
>
len
(
visualizer
.
results
):
break
visualizer
.
add_vis
(
idx
)
visualizer
.
image2video
()
if
__name__
==
'__main__'
:
main
()
\ No newline at end of file
Prev
1
2
3
4
5
6
Next
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