Note: do not judge me for using the blue dragon images, and yes, they're AI generated.
This project is available in three different interfaces, each with a different set of capabilities. The web interface is for people who don't want to download the repo and rarely uses this.
| Feature | Web | Desktop | Command Line |
|---|---|---|---|
| Lego Image | Yes | Yes | Yes |
| ASCII Image | Yes | Yes | Yes |
| Lego Video | No | Yes | Yes |
| ASCII Video | No | No | No |
| Change texture* | No | Yes | Yes |
Web URL: https://klausjackson.github.io/Photomosaic/
Preview the UI for Lego and ASCII converter (Lego Tab has generate video button):

Install necessary packages for the UI:
pip install Pillow numpy opencv-pythonTo run the UI from parent directory:
python ui/ui.pyTurn your images and videos into a Lego-like version.
Credit: This project's core logic is inspired by code from Viet nguyen AI.
| Example 1 | Example 2 | Example 3 |
|---|---|---|
![]() |
![]() |
![]() |
You only need to install opencv for this.
data/lego.png is a texture of a single Lego brick with shading. You can change it to something else if you want different texture.
python lego_image.py --input <path_to_image> --output <path_to_save> --stride <size>Example:
python lego_image.py --input data/cat.png --output results/cat_lego.png --stride 10Arguments:
--input: Path to the input image (default: no default).--output: Path to save the output image (default:results/result.png).--stride: The size (in pixels) of each Lego brick (default:10).
A friendly reminder that it might not be usable as a video in certain situations despite it having 'mp4' extension.
python lego_video.py --input <path_to_video> --output <path_to_save> --stride <size>Example:
python lego_video.py --input data/video.mp4 --output results/video_lego.mp4 --stride 15Arguments:
--input: Path to the input video (default:data/video.mp4).--output: Path to save the output video (default:results/result.mp4).--stride: The size (in pixels) of each Lego brick (default:10).--fps: Override the frames per second of the output video. If0, it uses the original video's FPS (default:0).
There's no changing FPS in UI, it's 0 by default.
Each set is ordered from darkest (least dense) to brightest (most dense). Uncomment # ASCII_ = ASCII_[::-1] # reverse to reverse. 3 sets of ASCII, pick the one you like or make one yourself:
- ASCII_1 = " .:-=+*#%@"
- ASCII_2 = " .:;=+*#"
- ASCII_3 = " ..,,::;;+zo"
Install necessary packages:
pip install Pillow numpy opencv-pythonascii_image.py
python ascii_image.py --input <path_to_image> --output <path_to_save> --width <number>Example:
python ascii_image.py --input test.jpg --output test_ascii.txt --width 100Arguments:
--input: Path to the input image file (default: test.jpg).--output: Path to save the output .txt file (default: result.txt).--width: width of the ASCII art in characters (default: 100).
There're 3 txt files for each set in ascii folder.
ASCII_1 = " .:-=+*#%@"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%*##%@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%#*+=-..----=%%%#+*%@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%*+=-:.-=+=-@@@%*%@@%*.-*%#%@%*=#@@%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%*+=-:::-+#@@@@%%%##*+=--:.::.-=+%%+.-#@@%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%#+=---::-+#@@%#*+=-:. :::=-#%%%%@*..=%@%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%*+=-----:-+#*+-:.. .-+#%-:+=-%@@%%@=..:#@%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%*+=------..--:.. .=#@@@%::=*=+@%%%%%::::#@%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%@%#+=---=---. .. . .=%@@%%%#::=++-*@@@%#+.--:*@@%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%@@%*=--=--==-: . . .-#@@%%%%%%-:-=*+--*%*-*-.-=:=%@%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%@@#*=--==--=-: . :*@@%%%%@@@@+:::+*+-:---+-.::=--#@%%%@%%%%%%%%
%%%%%%%%%%%%%%%%%%%@@#+=--==----: .. -#@%@@@@@%#+==:::-=**+:::+#===:--:+@@%*@%%%%%%%
%%%%%%%%%%%%%%%%%%@%*=---==---:. ...-%@@@%#*=-::=+#*::::-+**=:.+%%*+:=+.=%*:%%%%%%%%
%%%%%%%%%%%%%%%%@%*=----=----. ...... ...=%%#+=:...-*%%@@%+:.:::-***+:-*#%**#=.=-+*@%%%%%%
%%%%%%%%%%%%%%%@#=-----=---: . ......... .:.:*+-:....=%@@@%*+**-..:::-+***=:+*#%#*-:#*=%%%%%%%
%%%%%%%%%%%%%@%+----------. .............. .:::-:.... -#@#+====-.:-. ....:-=+*+-=*#%***%+-@@%%%%%
%%%%%%%%%%%%@#=---------: ......::::..... ::.-:... .+@@%%%*=:.:. :--... .:::-==:=+*****:=#%%%%%%
%%%%%%%%%%%%*----------. .....::::::::... .. .:::- ..:#@%%%%%##*+-. .==::..:-:-===:=-*+=:-*#%%%%%%
%%%%%%%%%%%*---------: ....::---:::::........::::: ..:%@%%%%@@@#*=-::. ::.----::==++-:=:..**%@%%%%%
%%%%%%%%%%+---:-----. ...::--------:....... .:::.: ..#@%%%%%%+-....:-=++=-::--==. :===-:::.+%%%%%%%
%%%%%%%%%+---:----:. ..::----------...::... .:::.: =@%%%%%%#+-.::. .:++***+++-.-:.-----::%@%%%%%%
%%%%%%%@*-::::-:-: ..::----==-----..:::::... .::::: +%%%%%%%@#*%#-:..:-=+*####+*+=+*-.:-::-*%%%%%%%%
%%%%%%%#-:::::::. .:::---=======-..:--::::.. .:--:=@%%%%%%%@@#::. ... .:-=+*+=++==-:--::-#%%%%%%%%
%%%%%%%=:::::::. .::-++***+====-.:-----:::.... .:---*@@%%%%%%*.:+: .... :=**=++++====-:*@@@%%%%%
%%%%%@*:::::::. :=*%%@@@@@%*==-:-==-----:::.... .:---+%@@@%%%+*%+ .::-:-:. :+*+==+++===--*%%%%%%%
%%%%%%-::::::. =#@@@%%%%%%%@+-.---------:-::::.. .:-=--#*%%%@@@#....:---++-:. :+*=-=+==:.::.*@%%%%
%%%%@#::::::.:#@@%%%%%%%%%%@=:=**####*+=---::::.. .:-=----@%**@+=+ .:-==**+=:..=+=*+-:--:.:.-%%%%%%
%%%%@+:::::.:%@%%%%%%%%%%%%#=#@@@%@@%@@@%#-:::.:. :---- =@*.**#= :--=+%*++-:-#@#=+*=:::..-%@%%%%%
%%%%%=.:::..#@%%%%%%%%@@@@@%@@@@@#++*+=*%@#:::.... .---:.=-.::...:-==+##*+=:=%%@%+-**--+*%@%%%%%%
%%%%%-.::. +@%%%%%%%%%%#*+===++**##=:=: :-+= .. .:---:.... .:--=+#**#*=:+%%@#=++==%@@%#%@%%%%
%%%%%-....:@%%%%@@@@@%%#**++=:....:-:::.............. ..----:. ..:--==+##*+*=-+%@%---==#%%%#*+%@%%%
%%%%@=....#@%%%%%*+=------::::-----:-::::::::::::::::.:::-====-..:---==**##+=-:+%%*#==%%%@%%%#=+%%%%
%%%%@+.. -@%%%@@#****+-....:------------::::::::::::::----===+=-::--==*%**#*+--+#@@%#%#*%%%@%*==#@%%
%%%%@#.. *%%%@%*+==-:..:--===------======---:::::::::-:::-======-:---+###*+*+--+#@%%@++%#+%#+===#%%%
%%%%%%- :%%@%*+==-:..:--===---------====++=---::::::::.:--====--:::-******==-:-+#@%%%*%%=+++==++%*%@
%%%%%@+ -@@%*+=-:.:-------:::::::::-----====--::.......:-------:..=+#*=*+++-::=*%%%%%%@*+++++++%*=%@
%%%%%@%.-+-::. .:-------::...........::-------:::-::. .:-----::...*++*=+==-::-+#@%%%%%%#++=-++++=#@%
%%%%%%* -++=:.-------::.....:::::::....:::--:--..-==- .----::... -+===----::---%%%%%%%%@%#--**+*#@%%
%%%%%%%--=: :----:::...::----:::....::::::::::.. :-:..:---:... .:==---::::::: :%@%%%%%%%@*:-%%%%@%%%
%%%%@%=.. :--:::...:-:::.........:::...... ... .:-::..:...--:::..:... :*#%@@@%@@*:.*%%%%%%%%
%%%@+:==: :::::..::::..:-=+*+:...... .:+**=--..:::::----::::....:. .-+#%%#=:.+@@%@@%%%%
%%%*=#=. ::::...::::=*#%@@%=:.... .:-=#@@@+ ..:::::-----:::::+*-. .... .--:..-++#%@%%%%%
%%%%#:. .:::...:.-*%@@@%%- ...........::::.:. -%* .......::::::::::---:--::::::.. ....:#%%%%%
%%@#-+- .::.....+@@%%%%%%=::::::::::::::...::.+*%=:..:. ......::::::..::..::.....:-+*+++=-=-=+@%%%%
%%%#%+ ..:....-@%%%%%%%%@@@@%####%%##**+#***+*#%@@%%%#*****####%@@%**++=+=+=-=*#%@%#***#%%#@@@%%%%%
%%%@%... ......:%@@%%%%%%%%%%%=..:%%:..=%@@%=::-%%%@@%@@*:::::.*@%%%=::+@@%:::#@@@+:......:+%%%%%%%%
%%%%% +- .......+%@@@@@@@@@%@#..-%-.:*@@%%%+..=@%%%%%%%+.:*+..*@%%@+..+%%#:::%%%*.:::#%#--#@%%%%%%%
%%%%@=%+ ........-=*##%%%%%%*..::..-=--=++=..=%%%%%%%%-.-@#..=@%%@+..+@@#:::%@%#:..:-+#%@%%%%%%%%%
%%%%%%%%:+ ...........:::::-:::::.:-=*#%%@+..=@%%%%%@#:.+@%:.:%@%@+..=%@#:.:%@%@#+-:...:=%%%%%%%%%
%%%%%%%@#%#: ............... :%@@@@%@+..=%%%@%%@+.::--:..#@%@+..=@%#:.:%@%%*#@%#+:..=@%%%%%%%
%%%%%%%%@%@%*++=:.. .:: :+..:#@%%%@+..=@@%*%%@-.:+++-..+@%@+..-%@*..-%%%%-:+#%%::.-@%%%%%%%
%%%%%%%%%%%@@@@@@%%#*******#%@+ .:@#:.:*@%%@=..:--:=@@#..-@@@*..-%%%%-..:-..:*@%@*........:*%%%%%%%%
%%%%%%%%%%%%%%%%%@@@@@@@@@@@@#====%%==-=*%%#====--:=@%=-==%%%*-=-*%%@%+=---+#@%%%###+=--=+%@%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@@@%%%%@@@@@@%#%%@@@@%%%@@@@%%%%@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@%%%%@%%@%%%%%%@@%@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@
ASCII_2 = " .:;=+*#"
******************************************************######****************************************
************************************************######**+++*##**####********************************
*******************************************#####**+=;:..::::;****;+*####**###***********************
****************************************###**+=;:..:;=;:###*+*##*=.:+***#*=;+##*********************
************************************###**+=;::..:=*####***+++=;;:: ::.:;=**=.:+##*******************
*********************************###*+=;::::.:=*##*+==;:.. ..:;:+****#+ .;*#******************
******************************##**+=;::::::;=++=::. :=+*::;;:*##**#;..:*#*****************
****************************##*+=;;:::::..:::. .;+###*.:;=;=#*****.::.+#****************
**************************#*+=;;;;;;::. .. .;*##***+.:;==:+###*+=.::.=##**************
***********************##*+;::;::;;:. ;*##******:.:;==::+*+:=:.:;.;*#*************
*********************##*=;;:;;::;:. .+##****####=..:=+=:.:::=:.::;::+#***#********
*******************##*=;::;;;:;:. :*#*#####*+=;;:..:;++=:::=+;;;.::.=##*=#*******
******************#*=;:;;;;::;:. . ;*###*+=;:..;=+=...::===;:.;**+=.;=.;*=.********
****************#*+;::;;;::::. .. ;**+=;:. .:+**##*=...::;=++;::=**+=*;.;;;=#******
***************#+;::::;;:::. .... ...:==:... .;*###*+=+=:.....:;=+=;:=+**++;:+=;*******
*************#*=:::::;;:::. ........ ...:.... :+#+=;;;;: .:. ...::;=+=:;=+*+==*;;##*****
************#+;:::::::::. .......... ...::. .=##***+;:... .;:.. ..:::;;.;==+==+:;+******
************+::::::::::. . ....::...... ....: .+#*****+++=:. .;;:....:.:;;;:;:==;:;++******
***********=:::::::::. ....::::::::... ... .:... .*#****###+=;:.. .. :;::..;;=;;.;: .=+*#*****
**********=:::::::::. ...::::::::::. .... ...... .+#******=:.....:;;=;::.:;;;. .;;;:....=*******
*********=::::::::: ...:::::::::::. ...... ..... ;#******+=:.::. :;==+====:.:..:::::::*#******
*******#+::::::::. ...::::;;;;::::...:..... ..::. =*******#++*+:. .:;;==++*+===;==; .::::+********
*******+::::::::. ...:::;;;;;;;;:..:::::.... .:::.;#*******##+... . .::;=+=;==;;:.:;:.:*********
*******;.:..:::. ...:;=++=;;;;;:.::::::::.... .::::+##******+ :=. .... .;++;;===;;;;::=###*****
*****#+:...:.:. .;=**#####*+;;:.:;;:::::::.... .::::=*###***;=*= ..:::::. .;+=;;===;;;::=*******
******;....... ;+###*******#;:.:;::::::::::..... .::;::*+***###+ . ..:;;=;:. .==;:;=;;..:..=#****
****#+........+##**********#;.;=+++++==;:::..... .:;::::#*=+#=;= .::;;+==;:..;=;==::::. ..:******
****#=.......*#************+;+###*##*###*+::..... .:;:: ;#=.+=*; .::;=*+==:.:+#+;;+;:... :*#*****
*****;......+#********#####*#####*==+;;+*#*:... .::::.;;.::...::;;=+*+=;.;**#*;;++::=+*#******
*****;.... =#**********+==;;;===+++;.;. .:=; .. .:::::.... .::;;;++=++;:=**#*;;=;;*##***#****
*****;... :#****#####**++==;;:....::..:............. ..:::::. .:::;;=+*==+;:=*#*;::;;+***++=*#***
****#;... +#*****+=;:::::::.::::::::::::::::............::;;;;:...:::;;+=++=;;:=**++;;***#***+;=****
****#=.. :#***##*++===;. ..:::::::::::::::..::::::::::::::;;;;;:..::;;+*+=++=::=*##*+*++***#*+;;+#**
****#+. +***#*+=;;:....::;;;;::::;;;;;;;;::...::::::::.::;;;;;;:.::;=+++==+;::=+#**#==*+=*+=;;;+***
******: .**#*+;;;:. .::;;;;:::::::::;;;;;;;;::..........::;;;;;:..::+==+++;;;::=+#***+**;;=;;;==*=*#
*****#= :##*+=;;...::;:;:::.......:::::;;;;;;::...... .::;;:::...;=++;====:::;=******#+=======*+;*#
*****#* :=:... ..::::::::..... ...::::;::::..::.. .:::::::.. .====;;;;;:.:=*#*******==;;====;+#*
******+ :=;;..:::::::........::::... ....::::::. :;;: .:::::... :=;;;:;::..::;********#*+;:====*#**
*******::;. .::::::.....:::::::.......:::...... .::. :::::. :;;:::::..... :*#*******#+.:****#***
****#*;. .:::......:::.... .. .......... ... .:::.... ..:::.:...... :+**###*##=..+********
***#=.;;. ::::....::...::;===. .... :;+=;:: .:::::::::::...... .:=+**+;..=##*##****
***=;+;. .:.....:...;=**##*;.... .::;+###= ....:::::::::::.:;=: ... .::...:==**#*****
****+.. ......:.:+*###**; ....... ...:... :*+ ................::::;:::...... . ..+*****
**#*:=: ........=##******;::..::::............;+*;..... ........... .............:=====;:;;;=#****
***+*= ..... ;#********####*++++**+++==+++==+**##****+=+++++++*##*+==;;=;;;:;=+*#*+++++***###*****
***#*. . ..... .*##***********;..:**...;*##*;..:***##*##=......=#***;..;##*..:*###=........=********
***** =; ..... .=*#########*#+..:*:.:+##***=..;#*******=..+=..=#**#=..;***..:***=...:+*+::*#*******
****#;*= .......:;=+*******+..::..:;:;;;=;..;********:.:#+..;#**#;..;##*...*#*+....:=+*#*********
********.= ..........::::::......:;+***#=..;#*****#+..;#*:.:*#*#;..;*#*...*#*#*=:.....;*********
*******#+*+. .......... . .*####*#=..;***#**#=..:::...+#*#;..;#**..:*#**++#*+=...;#*******
********#*#*=;=;:. ..: .=..:*#***#=..;##*+**#:..===:..=#*#=..:*#=..:****:.=***:..:#*******
***********######**+++===+++*#= .:#+...+#**#;...:::;##+..:###+..:****:...:...+#*#+.........+********
*****************############+;;;;**;;;;+***;;;;::.;#*;;;;***=:;:+**#*=;::;=*#***+++=;::;=*#********
******************************####**####****######*+**####***####****########****##########*********
*****************************#*****#****#**#******##*#***********#*********************************#
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
************************************#**************############*************************************
******************************#####***##*********##+;:.....:;=**************************************
****************************##*+=::...:=**********. ..::;+*####*******************************
*************************###*+;:. . =#******#. :;: ..:::::;+*###****************************
**********************###+=;;::. .+*;+*******#.=###= .. .;;;;:.:=*###*************************
********************##+=;;;::. .*#**##********+##**+..;. :;=+=:..;*##***********************
******************#*=::;;:. +#**##=+#****###*==*#*: =. .:=++=:.:+###********************
****************#*=::=;: :#**#*;.**####*=:.;****#; =. .;=++;..=*#*******************
**************##=::==: .*#*+: +##*+=: :*####**#: = .;=++=. =*#*****************
*************#+::==: .. .*+;:.+*+=;. .=*##******** ;: .. :;;+*= .=##***************
***********##;.;+: .. . .=*: . :::;:..;+=;:.:;=+***#:.; .:. :;;+*; :*#**************
**********#*:.==. .. .. ;*+ : .;. ;;..:=+**###***; = :: .;;;*+. =#*************
*********#+.;+: .. . =+:..; :. :.:;;. :=+###*****#: = :;. :;;=*; ;*#***********
********#= ==. .. .. :*..;;:.. .::. ::=*#***** :; . . .;: :=;;*+ .*#**********
*******#= =;. . .. =;:=;;:::. .:; :+==****#; +. . . .;: .;;;++ .*#*********
******#= =; .. . : ;+:=;:::;;. : .;. ..**+**#+ == .. . ;;. .;;;+* .**********
*****#+ ;: . .; :+*=+;=;:. :... :;.. :: ;+:**##= =: : :. ;;. .;;;++ :#********
******.:: . :: ;**:*#*#=:;.:: ..=** :;: : .. *=*#*: :=. :. .;;. :;:;*= =#*******
****#:.: .:. ;#= +###*****#=:;+...;*=.;+;.:. . .:*#+:..;;: .:. .;;..;:;;*: ********
***#+ : ;*#= ;#*:=#*++*#****###+;==:.:;;: :. . ==;..:;;. .: :;;.:;.;=+ :#******
***#:.. +#**+ ******++: ;********#=.;++=:.:. ..:;;: . .: . ;;::;.:;+: *#*****
**#+ . +#****:*#*+.. .:..=*#*****: ==::..: .;;;:. .. .. .. :;;:;..;== ;#*****
**#; =#****#**#*;;;;. .:::=####; ;+;=; . .. ;;. .. .. ;;;;. :;= .******
**#: ;#***********:.:: ..=+**. ++=:. :=;::: ..::. ;=: . .. :;;;: .;=: *#****
*#*..******####***:;:.:==. ;= :. ;=;=;:. .;==+++=. +##*: . .;;;: .;=: +#****
*#* =#***##*++*#**#+.:*##*==: ..:+: .+=;;:..;. .=++*##:;**#*. .;. . :;;: .:=: +#****
*#*:****#=. :+*****##*****#*;;. .;=: .==;:. :=; .:;=+*#*#**#= +#*; .;;. .:=. +#****
*#*+#**#+ ;:;=;;;;;=++*###**+.=:=; .. .:;;: .;=: .;;;=*****+ :***#: .. :;. .:;. *#****
***#*#*:: :===;;;::...::=+#*+***+=:::;;;=;:.::: .:==. :=******#;.*****+ .*##+: .;. .:; .******
*****#;:=;. ..... :=*##+ .:.:=:. .:;+: .:=*#**=*#***#*. =#**##; : .;: ;#*****
****#:;+;. . .;+***+=:. .=#+ : ....; .;;;;:. .;+: :=;;+**##****** :******#; .: +#*****
***#=:=. . . =*########*=. .*+:;;+ *: :=======;: .;=. .=*++*******#+ .********* .. :#******
****.; .+=.;. +#******#####*; . +#*#*+:* ..:::;;:. ;; . :#**#******.:*#*******#. .. +#******
**#*. .*#+;*=+#*****##*=;::;*; : +#**#**+. .:;;:. : .+;:*#******==##*********: .. ;#*******
***#: ;#*#**##***;##*;. :+**#:.: +#**####+=;:.. .::; *+=********#***********. .. .*********
*****. +####*###;;#*. . +###*** .. *#*=.:.:+***+. .. ...#**#*****#************ . +#********
****#*: ;+****=::**. ; :#*****#+ :..*+ . .:.. +;;#******************#; . +#*********
*****##+;. ....:=##+ :; =*******#= :..=;.::..::;;;;;+;. :#=*#****************** +#**********
*******###*****##**= := .#*******#= .: .;. =. .:::;;:.. := +#******************#: +#***********
**********####****#+ ;; ;##******#+: . . ;. . =#;;#*****************#; .+#************
*******************#: .=: .+####***##+=;::. =: . . .. .**+=#****************#= :*#*************
*********************. .;;. .;+*#######*+;. . .. :+ *##**#***************#= .=##**************
********************#*; .;;. ..::.. ..... .+*..*#******************##= ;*#****************
**********************#+: :::::...........:. :=#*.;*#******************#*: ;*##*****************
***********************##+;. ..... .:=*#*+;+#********************+:;*##*******************
*************************###*+=;:.......:;=+**###***##********************+=*##*********************
****************************#################*****##***********************##***********************
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
##**************************************************************************************************
ASCII_3 = " ..,,::;;+zo"
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoooooozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzooooooz+;;+zoozzoooozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoooooz+;::,..,,,,:zzz+:;zoooozzooozzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoooz+;::,..,:;:,oooz;zooz;.,;++zoz;:;oozzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoooz+;::,,..,:+oooozz++;;::,,,.,,.,::+z;.,;oozzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoooz;;:,,,,.,:+ooz;;::,... ...,:,;zzzzo;..:zozzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoozz;::,,,,,,,;;;:,,... .,:+z,,::,zoozzo:..,+ozzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzooz;::,,,,,,..,,,.. . .:+ooo+.,:;::ozzzzz.,,.;ozzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzoz+::,,,,,,,. ... ....:+oozzz+.,:;:,;oooz;;.,,.;oozzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzooz;:,,,,,,,,. ... ....,+oozzzzz+,.,:;:,,;+;,;,.,,.:zozzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzoo+;:,,:,,,,,. . .... .. .;oozzzzoooo:.,,:;;,.,,,:,.,,:,,;ozzzozzzzzzzz
zzzzzzzzzzzzzzzzzzzoo+;:,,,:,,,,,. ..........,+ozoooooz;::,,.,,:;;:,,,:+:::.,,.:oo+;ozzzzzzz
zzzzzzzzzzzzzzzzzzoz;:,,,::,,,,. .. .............,zoooz+;:,.,,;+;...,,:;;:,.:++;:.::.:z;.zzzzzzzz
zzzzzzzzzzzzzzzzoz;:,,,,:,,,,. ...................,zz+;,,...,;zzooz:,..,,,;;;:,,;++;;+:.:,:;ozzzzzz
zzzzzzzzzzzzzzzo+:,,,,,,,,,,. ............... ...,;:,.....:+oooz;:;;,.....,:;;;:,:;+z+;,,+;:zzzzzzz
zzzzzzzzzzzzzoz;,,,,,,,,,,. ................. ....,......,+o;:::::,.,,. ....,,::;:,:;;+;;;+:,oozzzzz
zzzzzzzzzzzzo+:,,,,,,,,,.. .................. .,.,,.....;oozzz;:,... .,,... ..,,,::.::;;;;;,:+zzzzzz
zzzzzzzzzzzz;,,,,,,,,,,. ......,,,,......... .,..,. ...+ozzzzz+;;:,.. .::,....,.,::,,:,;::,,;+zzzzzz
zzzzzzzzzzz;,,,,,,,,,.......,,,,,,,,,.........,... ...zozzzzooo+;:,,.. ...,,,,..,:::,,:,..;;zozzzzz
zzzzzzzzzz:,,,,,,,,,......,,,,,,,,,,....... .,,... ..+ozzzzz+:,.....,::::,,.,,::. ..:::,.,..:zzzzzzz
zzzzzzzzz;,,,,,,,,,.....,,,,,,,,,,,........ ..,... :ozzzzzz;;,.,,.. .,:;;;;;;:,.,..,,,,,,,zozzzzzz
zzzzzzzo;,,,,,,,,.....,,,,,,,,,,,,...,,,.... ..,,,. :zzzzzzzo+;+;,...,,::;;;++;;:::;,.,,,,,;zzzzzzzz
zzzzzzz+,,,,,,,,.....,,,,,::::,:,..,,,,,,... .,,,.:ozzzzzzzoo;... .....,,::;;:;:::,.,,,.,+zzzzzzzz
zzzzzzz:,,,,,,,....,,:;;;;:::::,.,,,,,,,,,.... .,,,,;oozzzzzz;.,:. ..... ..,:;;:::::::::,,;ooozzzzz
zzzzzo;,,,.,,,. .:;+zoooooz;::,.,::,,,,,,,..... .,,,,:zooozzz:;z:....,,,,,.. .:;::::::::,,,;+zzzzzz
zzzzzz,.,..,,..:+ooozzzzzzzo:,.,,,,,,,,,,,,..... .,,,,,+;zzzooo;....,,,,::,,. ,:;:,:::,..,..;ozzzz
zzzzo;,.......;oozzzzzzzzzzo:.:;;++;;;::,,,...... .,,:,,,,oz;;o;::..,,,:;;;,,..:::;:,,,,....,zzzzzz
zzzzo:.......zozzzzzzzzzzzz+:+ooozoozoooz;,,,.... ..,,,, :o;.;;+:..,,::z;:;,.,+o+::;:,....,zozzzzz
zzzzz:......+ozzzzzzzzooooozooooo+:;;::;zo+,.,.... .,,,,.:,.,,...,,:::;+;:,,:zzoz:,;;,,:;zozzzzzz
zzzzz,.....:ozzzzzzzzzz;;:::::;;;++:,:...,::... ..,,,,,.... .,,,::+;;;;,,:zzo+::;::zooz+zozzzz
zzzzz,....,ozzzzoooooz+;;;;::,....,,..,..................,,,,,....,,,:::++;:;:,:zo+,,,::;zzz+;;zozzz
zzzzo:....;ozzzzz;::,,,,,,,,,,,,,,,,,,,,,,,,,,..,......,,,,:::,..,,,,::;;++;:,,:zz;;::+zzozzz+::zzzz
zzzzo;.. ,ozzzoo+;;;;:,....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::,..,,,:;z;;;;:,,:+ooz+z;;zzzoz;::+ozz
zzzzo+.. ;zzzoz;:::,....,,:::,,,,,,::::::,,,,.,,,,,,,,,.,,::::::,.,,,:+++;:;:,,:+ozzo;;z+:++;:::+zzz
zzzzzz, .zzoz;:::,...,,,::,,,,,,,,,,,::::::,,,..........,,,:::,,,.,,;;;;;;::,,,:+ozzz;z+::;:::::z;zo
zzzzzo; ,ooz;::,..,,,,,,,,,,.....,,,,,,,::::,,,.........,,,,,,,,..::;;:;;::,,,:;zzzzzzo;::::::;z;:zo
zzzzzoz.,:,......,,,,,,,,.............,,,,,,,,,..,,.. .,,,,,,,....;::;::::,,,,:+ozzzzzz+:::,;:;::;oz
zzzzzz;.,:::..,,,,,,,,......,,,,,,......,,,,,,,..,::, .,,,,,,....,::::,,,,..,,,zzzzzzzzoz;,,;;;;+ozz
zzzzzz+,,:...,,,,,,.....,,,,,,,......,,,,,,..... .,,..,,,,,... .,:,,,,,,,.... ,zozzzzzzzo;.,zzzzozzz
zzzzo+:.. .,,,,.....,,,,................... ... .,,,.......,,,,,...... ,;+zooozoo;..;zzzzzzzz
zzzo;.::..,,,,....,,...,,::;:,........ .,:;;:,,...,,,,,,,,,,,....... ..,:+zz;:..:oozoozzzz
zzz;:+:. .,,....,..,:;+zooz:..... .,,:;ooo; ....,,,,,,,,,,,.,:;,...... .,,...,::+zozzzzz
zzz++.. .......,.,;zooozz, .............,,... ,z; . .................,,,,,,,,....... ......+zzzzz
zzo+,;, ........:oozzzzzz:,,,,,,,,..,.......,.:;+:..... ...........................,:;;:;:,:,::ozzzz
zzz+z: .......,ozzzzzzzzooooz;;;;zz;;;;:;;;;:;++oozzz+;;;;;;;;+zooz;;::,::::,:;+zoz+;;;;zz+ooozzzzz
zzzoz... .......+oozzzzzzzzzzz:..,z+...:zooz:..,zzzoozoo;......;ozzz:..:oo+.,,+ooo:........:zzzzzzzz
zzzzz.:, ........:+ooooooooozo;..,z,.,;oozzz;..:ozzzzzzz:..;:..;ozzo:..:zz+..,zzz;...,+z;,,+ozzzzzzz
zzzzo:z: ........,:;;++zzzzz;..,,..,:,,::;:..:zzzzzzzz,.,o;..:ozzo:..:oo+..,zoz;....,:;zozzzzzzzzz
zzzzzzz+.:. .............,,,,,,......,:;+zzo;..:ozzzzzo+..:oz,.,zozo:..:zo+..,zozo+:,.....:zzzzzzzzz
zzzzzzzo;z;. ................. ,zoooozo:..:zzzozzo:..,,,...;ozo:..:oz+..,zozz;+oz+:...:ozzzzzzz
zzzzzzzzozoz;:;:,.. ..., .:..,+ozzzo:..:ooz;zzo,.,:::,..;ozo:..,zo;..,zzzz,.;+z+,..,ozzzzzzz
zzzzzzzzzzzooooooz++;;;;;;;++o: .,o;...;ozzo:...,,,:oo;..,ooo;..,zzzz,...,...;ozo;.........;zzzzzzzz
zzzzzzzzzzzzzzzzzoooooooooooo+::::+z::,:;zz+::::,,.,o+:,,:zzz;,:,;zzoz;:,,,:+ozzz+;;:,,,:;zozzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoooozzoooozzzzooooooz+zzoooozzzoooozzzzoooooooozzzzoooooooooozzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzozzzzzozzzzozzozzzzzzoozozzzzzzzzzzzozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzo
ascii_video.py
python ascii_video.py --input <path_to_video> --width <number> --set <1, 2, or 3>Example:
python ascii_video.py --input lego/data/video.mp4 --width 100 --set 1Arguments:
--input: Path to the input video file (Required).--width: The desired width of the ASCII art in characters (default: 100).--set: Which built-in character set to use: 1, 2, or 3 (default: 1).




