from PIL import Image import numpy as np import potrace def png_to_np_array(filename): img = Image.open(filename) data = np.array(img.getdata()).reshape(img.size[0], img.size[1], 3) bindata = np.zeros((img.size[0], img.size[1]), np.uint32) for i, row in enumerate(data): for j, byte in enumerate(row): bindata[i, j] = 1 if sum(byte) < 125*3 else 0 return bindata def png_to_svg(filename): data = png_to_np_array(filename) bmp = potrace.Bitmap(data) path = bmp.trace() return path print([curve.segments for curve in png_to_svg('pngs/png500.png').curves])