File size: 1,628 Bytes
424188c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import os
import json
import cv2
import numpy as np
import cairosvg
from plot_utils import plot_preds, svg_generate

image_base = '../../data/outdoor/cities_dataset/rgb/'
svg_base = './svg_results'

if not os.path.exists(svg_base):
    os.makedirs(svg_base)

data_filename = '../data/outdoor/cities_dataset/valid_list.txt'
with open(data_filename) as f:
    filenames = f.readlines()

filenames = filenames[50:]  # according to previous works, the testing samples are the last 350 samples of the val split
filenames = [filename.strip() for filename in filenames]
idx_to_filename = {idx: filename for idx, filename in enumerate(filenames)}

method_name = 'heat'
results_base = '../results/npy_outdoor_test_256/'

svg_method_base = os.path.join(svg_base, method_name)
if not os.path.exists(svg_method_base):
    os.makedirs(svg_method_base)

for result_filename in sorted(os.listdir(results_base)):
    file_idx = int(result_filename[:-12])
    filename = idx_to_filename[file_idx]

    image_path = os.path.join(image_base, filename + '.jpg')

    results_path = os.path.join(results_base, result_filename)
    results = np.load(results_path, allow_pickle=True).tolist()
    corners = results['corners'].astype(np.int)
    edge_ids = results['edges']
    edges = corners[edge_ids].reshape(edge_ids.shape[0], -1)

    svg = svg_generate(image_path, corners, edges, name='temp', size=256)
    svg_path = os.path.join(svg_base, 'tmp.svg')
    svg.saveas(svg_path)  # save the svg file temporarily

    svg_img_path = os.path.join(svg_method_base, '{}.png'.format(filename))
    cairosvg.svg2png(url=svg_path, write_to=svg_img_path)