An ascii art generator that's actually good. Does edge detection and selects the most appropriate characters.
pip install asciiartist
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)
Run the script ./model/model-gen.py
and build the wheel with poetry build -f wheel
.
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) ,_