Rough Draw

Rough Draw creates a sketchy, hand-drawn version of any image using RoughJS and a WASM version of OpenCV.

Technique

OpenCV is used to detect shapes (contours) in an image. At first, the image is transformed to grayscale and then a threshold function is applied.

If double pass is selected, an inverse threshold is also applied. Think of a double pass akin to applying a low-pass and a high-pass filter to a signal.

Contours are then extracted from the image followed by extracting the average color inside that contour.

The contour points are then passed to RoughJS which renders a sketchy version of the shape. The shape is then hachure-filled with the shape's average color.