An ascii art generator that's actually good.
Does edge detection and selects the most appropriate characters.
Installing with pip:
pip install asciiartist
Installing from wheel:
Download the wheel file from this project's releases and run
pip install <path/to/wheel>
from asciiartist import asciiartist, display_edges from PIL import Image img = Image.open("niko.png") art, edges = asciiartist( img, # The image! 30, # Number of lines of the output ascii art noise_reduction=2, # Level of noise reduction (optional) line_weight=1, # Weight of the lines to draw (optional) text_ratio=2.2 # Height/width ratio of each character (optional) ) print(art) # `art` is a string u can just print # v Display the result of edge detection. # Good for finetuning params. display_edges(edges)
Build from Source
Run the script
./model/model-gen.py and build the wheel with
poetry build -f wheel.
How it works
Roughly, how Ascii Artist generates the drawings:
- Run edge detection
- Segment the image for each char
- Pass each segment through a CNN to get the most appropriate character.
The CNN is trained with distorted images of characters (in font consolas),
created in a way that emulates the output of the edge detection.
__=E.L__ >#-=@>@F* `<_ _/`@o<FTFC@[_~_.__ _./`\_`<__ @@7*` _,~`` *v `^L_ )( _,~^C___ _ ````*@``````` __,;@"*'`C` *@@_ _-V __,@'^`CC)-[_L-----o,,}<@F-- __,-Ec>C<4@'C`'`"-[_,/ _,L-L ," -````` ```` _-' _ _ __~`` `` "<` _ `(V\_ `V(<_ _____,,~~<7oEE(@@_Eo@@Fo, ___,-~-^```` .-.__V) ,_