HEAT / qualitative_outdoor /plot_utils.py
Egrt's picture
init
424188c
import cv2
import svgwrite
import colorsys
def plot_preds(image, corners, edges):
for line in edges:
cv2.line(image, tuple(line[:2]), tuple(line[2:]), (255, 255, 0), 2)
for c in corners:
cv2.circle(image, (int(c[0]), int(c[1])), 3, (0, 0, 255), -1)
return image
def random_colors(N, bright=True, same=False, colors=None):
brightness = 1.0 if bright else 0.7
if colors is None or same:
if same:
hsv = [(0, 1, brightness) for i in range(N)]
else:
hsv = [(i / N, 1, brightness) for i in range(N)]
else:
hsv = [(colors[i], 1, brightness) for i in range(N)]
colors = list(map(lambda c: colorsys.hsv_to_rgb(*c), hsv))
return colors
def svg_generate(image_link, corners, edges, name, size=512):
dwg = svgwrite.Drawing(name + '.svg', size=('{}'.format(size), '{}'.format(size)))
shapes = dwg.add(dwg.g(id='shape', fill='black'))
# colors = random_colors(len(edges), same=True)
shapes.add(dwg.image(href=image_link, size=(size, size)))
scale = size / 256
for i, edge in enumerate(edges):
x = edge[:2] * scale
y = edge[2:] * scale
shapes.add(dwg.line((int(x[0]), int(x[1])), (int(y[0]), int(y[1])),
stroke="#EE6507", stroke_width=3*scale, opacity=0.7))
for i, corner in enumerate(corners):
shapes.add(dwg.circle((int(corners[i][0] * scale), int(corners[i][1]) * scale), r=4*scale,
stroke='green', fill='white', stroke_width=2*scale, opacity=0.8))
return dwg