topo
This commit is contained in:
parent
984d8ec198
commit
25905e2ad8
|
@ -0,0 +1,55 @@
|
|||
from __future__ import division
|
||||
|
||||
from itertools import groupby
|
||||
from PIL import Image
|
||||
|
||||
Image.MAX_IMAGE_PIXELS = 1000000000
|
||||
|
||||
import axi
|
||||
import numpy as np
|
||||
import sys
|
||||
|
||||
WIDTH = 12
|
||||
HEIGHT = 8.5
|
||||
LANDSCAPE = False
|
||||
ROWS = 36
|
||||
|
||||
if not LANDSCAPE:
|
||||
WIDTH, HEIGHT = HEIGHT, WIDTH
|
||||
|
||||
def remove_flats(path):
|
||||
paths = []
|
||||
for k, g in groupby(path, lambda p: p[1]):
|
||||
if k > 0:
|
||||
paths.append(list(g))
|
||||
return paths
|
||||
|
||||
def main():
|
||||
paths = []
|
||||
im = Image.open(sys.argv[1])
|
||||
w, h = im.size
|
||||
data = np.asarray(im) / 255
|
||||
# data = data ** 0.5
|
||||
lines_per_row = int(h / ROWS)
|
||||
for j in range(0, ROWS, 1):
|
||||
y0 = j * lines_per_row
|
||||
y1 = y0 + lines_per_row
|
||||
d = data[y0:y1]
|
||||
for q in range(0, 101, 25):
|
||||
print j, q
|
||||
values = np.percentile(d, q, axis=0) * 0.9
|
||||
path = enumerate(values)
|
||||
for path in remove_flats(path):
|
||||
x = np.array([p[0] for p in path]) * WIDTH / w
|
||||
y = (j - np.array([p[1] for p in path])) * HEIGHT / ROWS
|
||||
path = zip(x, y)
|
||||
path = axi.simplify_paths([path], 0.001)[0]
|
||||
paths.append(path)
|
||||
d = axi.Drawing(paths)
|
||||
im = d.render(
|
||||
scale=109 * 1, line_width=0.3/25.4,
|
||||
show_axi_bounds=False, use_axi_bounds=False)
|
||||
im.write_to_png('out.png')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue