Skip to content
Convert images to vectorized line drawings for plotters.
Python
Branch: master
Clone or download
Latest commit eac8073 Mar 31, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images Initial Commit Mar 31, 2017
output Adds screenshots Mar 31, 2017
screenshots Adds screenshots Mar 31, 2017
.gitignore Initial commit Mar 31, 2017
LICENSE Initial commit Mar 31, 2017
README.md
filters.py Initial Commit Mar 31, 2017
linedraw.py Initial Commit Mar 31, 2017
perlin.py
strokesort.py Initial Commit Mar 31, 2017
util.py Initial Commit Mar 31, 2017

README.md

linedraw

Convert images to vectorized line drawings for plotters. Alt text

  • Exports polyline-only svg file with optimized stroke order for plotters;
  • Sketchy style powered by Perlin noise;
  • Contour-only or hatch-only modes.

Dependencies

Python 2, PIL/Pillow, numpy, OpenCV (Optional for better performance)

Usage

Convert an image to line drawing and export .SVG format:

$ python linedraw.py -i input.jpg -o output.svg

Command specs:

usage: linedraw.py [-h] [-i [INPUT_PATH]] [-o [OUTPUT_PATH]] [-b] [-nc] [-nh]
                   [--no_cv] [--hatch_size [HATCH_SIZE]]
                   [--contour_simplify [CONTOUR_SIMPLIFY]]

Convert image to vectorized line drawing for plotters.

optional arguments:
  -h, --help            show this help message and exit
  -i [INPUT_PATH], --input [INPUT_PATH]
                        Input path
  -o [OUTPUT_PATH], --output [OUTPUT_PATH]
                        Output path.
  -b, --show_bitmap     Display bitmap preview.
  -nc, --no_contour     Don't draw contours.
  -nh, --no_hatch       Disable hatching.
  --no_cv               Don't use openCV.
  --hatch_size [HATCH_SIZE]
                        Patch size of hatches. eg. 8, 16, 32
  --contour_simplify [CONTOUR_SIMPLIFY]
                        Level of contour simplification. eg. 1, 2, 3

Python:

import linedraw
lines = linedraw.sketch("path/to/img.jpg")  # return list of polylines, eg.
                                            # [[(x,y),(x,y),(x,y)],[(x,y),(x,y),...],...]
                                            
linedraw.visualize(lines)                   # simulates plotter behavior
                                            # draw the lines in order using turtle graphics.
You can’t perform that action at this time.