Skip to content

Commit 2d14190

Browse files
author
spencer@primus
committed
Add fontscale
1 parent 255d33a commit 2d14190

1 file changed

Lines changed: 50 additions & 18 deletions

File tree

avapi/visualize/snapshot.py

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ def show_image(img, extent=None, axis=False, inline=True, grayscale=False):
3636
if inline:
3737
pil_im = Image.fromarray(img)
3838
plt.figure(figsize=[2 * x for x in plt.rcParams["figure.figsize"]])
39-
plt.imshow(pil_im, extent=extent, cmap=("gray" if grayscale else None))
39+
img_plot = plt.imshow(pil_im, extent=extent, cmap=("gray" if grayscale else None))
4040
if not axis:
4141
plt.axis("off")
4242
plt.show()
4343
else:
44-
Image.fromarray(img).show()
44+
img_plot = Image.fromarray(img).show()
45+
return img_plot
4546

4647

4748
def show_boxes_bev(
@@ -242,6 +243,7 @@ def show_image_with_boxes(
242243
with_mask=False,
243244
show_IDs=True,
244245
fontscale=1,
246+
font_thickness=3,
245247
show=True,
246248
return_image=False,
247249
addbox=[],
@@ -308,9 +310,9 @@ def show_image_with_boxes(
308310
bl_edge = (box.xmin, box.ymin)
309311
# add text
310312
if text is not None:
311-
add_text_to_image(img1, bl_edge, text[i], fontscale=fontscale)
313+
add_text_to_image(img1, bl_edge, text[i], fontscale=fontscale, font_thickness=font_thickness)
312314
# add id
313-
add_text_to_image(img1, bl_edge, ID, fontscale=fontscale)
315+
add_text_to_image(img1, bl_edge, ID, fontscale=fontscale, font_thickness=font_thickness)
314316
elif (
315317
isinstance(box, (Box3D, BasicBoxTrack3D))
316318
or (
@@ -385,7 +387,7 @@ def show_image_with_boxes(
385387
return img1
386388

387389

388-
def add_text_to_image(img, bl_edge, text, fontscale=1):
390+
def add_text_to_image(img, bl_edge, text, fontscale=1, font_thickness=3):
389391
if text is not None:
390392
# name on top of box
391393
font = cv2.FONT_HERSHEY_SIMPLEX
@@ -395,7 +397,6 @@ def add_text_to_image(img, bl_edge, text, fontscale=1):
395397
max(edge, bl_edge[1] - sep)
396398
)
397399
fontColor = (255, 255, 255)
398-
font_thickness = 2
399400
lineType = 2
400401
x, y = bottomLeftCornerOfText
401402
dy = 10
@@ -439,6 +440,7 @@ def show_lidar_bev_with_boxes(
439440
rescale: bool = True,
440441
show: bool = True,
441442
return_image: bool = False,
443+
scale_return_image: bool = False,
442444
):
443445
"""
444446
Show lidar and the detection results (optional) in BEV
@@ -473,6 +475,20 @@ def show_lidar_bev_with_boxes(
473475
else:
474476
pc2 = pc.data
475477

478+
# update extent
479+
if extent is not None:
480+
extent_max = [
481+
(min(pc[:, 0]), max(pc[:, 1])),
482+
(min(pc[:, 1]), max(pc[:, 1])),
483+
(min(pc[:, 2]), max(pc[:, 2]))
484+
]
485+
extent_use = []
486+
for ex, ex_max in zip(extent, extent_max):
487+
ex_in = [e1 if e1 is not None else em for e1, em in zip(ex, ex_max)]
488+
extent_use.append(tuple(ex_in))
489+
else:
490+
extent_use = extent
491+
476492
# Get maxes and mins
477493
if rescale:
478494
if pc2.shape[0] > 0:
@@ -486,9 +502,9 @@ def show_lidar_bev_with_boxes(
486502
min_width = 0
487503
max_width = 0
488504
else:
489-
assert extent is not None
490-
min_range, max_range = extent[0]
491-
min_width, max_width = extent[1]
505+
assert extent_use is not None
506+
min_range, max_range = extent_use[0]
507+
min_width, max_width = extent_use[1]
492508

493509
boxes_show = []
494510
boxes_show_corners = []
@@ -523,21 +539,27 @@ def show_lidar_bev_with_boxes(
523539
min_width = min(min_width, min(bev_corners[:, 1]) - 2)
524540
max_width = max(max_width, max(bev_corners[:, 1]) + 2)
525541

542+
# update extent with new ranges/widths
543+
extent_use[0] = (min(min_range, extent_use[0][0]), max(max_range, extent_use[0][1]))
544+
extent_use[1] = (min(min_width, extent_use[1][0]), max(max_width, extent_use[1][1]))
545+
526546
# define the size of the image and scaling factor
527547
if background_color == "black":
528548
img1 = 0 * np.ones([bev_size[0], bev_size[1], 3], dtype=np.uint8)
529549
elif background_color == "white":
530550
img1 = 255 * np.ones([bev_size[0], bev_size[1], 3], dtype=np.uint8)
531551
else:
532552
raise NotImplementedError(background_color)
533-
if extent is None:
553+
554+
# get scaling
555+
if extent_use is None:
534556
width_scale = (max_width - min_width) / bev_size[0]
535557
range_scale = (max_range - min_range) / bev_size[1]
536558
min_arr = np.array([min_range, min_width])
537559
else:
538-
width_scale = (extent[1][1] - extent[1][0]) / bev_size[0]
539-
range_scale = (extent[0][1] - extent[0][0]) / bev_size[1]
540-
min_arr = np.array([extent[0][0], extent[1][0]])
560+
width_scale = (extent_use[1][1] - extent_use[1][0]) / bev_size[0]
561+
range_scale = (extent_use[0][1] - extent_use[0][0]) / bev_size[1]
562+
min_arr = np.array([extent_use[0][0], extent_use[1][0]])
541563
sc_arr = np.array([range_scale, width_scale])
542564
pc_bev = (pc2[:, [0, 1]] - min_arr) / sc_arr
543565

@@ -646,10 +668,11 @@ def plot_line(img1, line, line_color):
646668
else:
647669
raise RuntimeError("Unknown line type")
648670

649-
if extent is None:
650-
viz_extent = [min_range, max_range, min_width, max_width]
671+
nominal_extent = [min_range, max_range, min_width, max_width]
672+
if extent_use is None:
673+
viz_extent = nominal_extent
651674
else:
652-
viz_extent = [*extent[0], *extent[1]]
675+
viz_extent = [*extent_use[0], *extent_use[1]]
653676

654677
if flipx:
655678
img1 = np.flip(img1, axis=1)
@@ -662,6 +685,15 @@ def plot_line(img1, line, line_color):
662685
viz_extent = [viz_extent[2], viz_extent[3], viz_extent[0], viz_extent[1]]
663686

664687
if show:
665-
show_image(img1, extent=viz_extent, inline=inline)
688+
img_plot = show_image(img1, extent=viz_extent, inline=inline)
689+
image_array = img_plot.get_array()
690+
666691
if return_image:
667-
return img1
692+
if scale_return_image:
693+
scale_ratio = width_scale / range_scale
694+
dx = bev_size[0]*scale_ratio if scale_ratio > 1 else bev_size[0]
695+
dy = bev_size[1]/scale_ratio if scale_ratio < 1 else bev_size[1]
696+
new_size = (int(dx), int(dy))
697+
return cv2.resize(img1, new_size)
698+
else:
699+
return img1

0 commit comments

Comments
 (0)