Ascii Artist
An ascii art generator that's actually good. Does edge detection and selects the most appropriate characters.
Installing
Installing with pip:
pip install asciiartist
Installing from wheel:
Download the wheel file from this project's releases and run
pip install
Quick Start
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.
Bye
^-^
__=E.L__
>#-=@>@F* `<_
_/`@o
C<4@'C`'`"-[_,/ _,L-L ,"
-````` ```` _-'
_ _ __~``
`` "<` _
`(V\_
`V(<_
_____,,~~<7oEE(@@_Eo@@Fo,
___,-~-^```` .-.__V) ,_