finds.dev← search

// the find

LingDong-/linedraw

★ 854 · Python · MIT · updated Jul 2023

Convert images to vectorized line drawings for plotters.

A Python script that converts raster images into plotter-ready SVG files using edge detection and Perlin-noise hatching. Output is polylines only — no fills, no paths — which is exactly what pen plotters need. Aimed at hobbyist plotter owners who want to feed photos or illustrations to their machine.

The stroke-order optimization in strokesort.py is the real value here — it minimizes pen-up travel, which matters a lot for plotter runtime on complex images. Perlin noise hatching produces a hand-drawn feel that pure edge-detection approaches miss. The Python API (returning a plain list of polylines) makes it easy to compose with other tools rather than treating SVG as a black box. OpenCV is optional, so it degrades gracefully to PIL-only if you don't have it installed.

The project is essentially abandoned — last commit was 2023, no releases, no changelog, and the README still hedges between Python 2 and 3 as if that's still a live question. The algorithm is a single-file script with no configuration persistence, so reproducing a result means remembering your exact CLI flags. Hatch density and contour detection quality are sensitive to image contrast and there's no guidance on tuning them for different input types — expect trial and error. No tests whatsoever, so if a dependency update quietly breaks the output nobody will know.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →