|
import cv2
|
|
import numpy as np
|
|
import numbers
|
|
|
|
|
|
def plot_points(vis, points, radius=1, color=(255, 255, 0), shift=4, indexes=0, is_index=False):
|
|
if isinstance(points, list):
|
|
num_point = len(points)
|
|
elif isinstance(points, np.numarray):
|
|
num_point = points.shape[0]
|
|
else:
|
|
raise NotImplementedError
|
|
if isinstance(radius, numbers.Number):
|
|
radius = np.zeros((num_point)) + radius
|
|
|
|
if isinstance(indexes, numbers.Number):
|
|
indexes = [indexes + i for i in range(num_point)]
|
|
elif isinstance(indexes, list):
|
|
pass
|
|
else:
|
|
raise NotImplementedError
|
|
|
|
factor = (1 << shift)
|
|
for (index, p, s) in zip(indexes, points, radius):
|
|
cv2.circle(vis, (int(p[0] * factor + 0.5), int(p[1] * factor + 0.5)),
|
|
int(s * factor), color, 1, cv2.LINE_AA, shift=shift)
|
|
if is_index:
|
|
vis = cv2.putText(vis, str(index), (int(p[0]), int(p[1])), cv2.FONT_HERSHEY_SIMPLEX, 0.2,
|
|
(255, 255, 255), 1)
|
|
|
|
return vis
|
|
|