首页Python【Python计算生态】A...

【Python计算生态】ASCII-generator—— ASCII艺术生成库

Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。

本系列将会陆续整理分享一些有趣、有用的第三方库。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_Ecosystem





01
简介

Python第三方库ASCII-generator是一个专门用于将图像或者视频转换为ASCII艺术风格,并且支持诸如英语、德语、法语、韩语、中文、日语等多语言字符。

该开源项目的开发者为一位越南老哥,因此前一段时间的B站何同学视频事件(使用该开源项目但未主动声明),收获了大量的关注和Star,并在github主页中表示了对中国开发者的感谢:

Recently, this repository has been protected and supported by the Chinese community in relation to a copyright issue. A million thanks to Chinese netizens in particular, and the Chinese community in general

由于该库未发布到PyPI,因此需要在其github主页直接下载zip压缩包到本地后解压或者通过git clone命令将项目克隆到本地。
https://github.com/vietnh1009/ASCII-generator
并需要安装以下依赖库:
cv2PILnumpy

需要注意的是,如果本地安装的Pillow库的版本>9.5,运行时会报以下错误,这是因为在新版本的Pillow库中getsize()方法被弃用,需要将代码中的getsize()方法替换为getbbox()getlength()方法

AttributeError: 'FreeTypeFont' object has no attribute 'getsize'


02
使用

下载好代码并安装相关的库以后,只需要一行命令就可以把图片或视频转成ASCII艺术风格。可以直接通过命令行运行,也可以修改对应的py文件来运行。

ASCII Generator的核心功能主要包括以下三类:
  • 图像转ASCII文本:将输入的图像转换为ASCII字符文本格式,支持多种语言字符集,包括英文、日文、韩文、中文等。对应文件夹中的img2txt.py文件。
  • 图像转ASCII图像:将输入的图像转换为ASCII字符图像格式,可选择不同的背景和字符颜色。对应文件夹中的img2img_color.pyimg2img.py文件。
  • 视频转ASCII视频:将输入的视频转换为ASCII字符视频格式,支持灰度和彩色输出。对应文件夹中的video2video.pyvideo2video_color.py文件。

使用时,允许用户设置相应参数,例如指定输入图像路径(input)、输出文本路径(output)、字符集模式(mode,复杂字符集包含更多的字符以提高细节表现)、输出字符画的宽度(num_cols)等。具体的参数信息可以查看对应的py文件中的get_args()函数部分:

# img2img_color.py

def get_args():
    parser = argparse.ArgumentParser("Image to ASCII")
    parser.add_argument("--input"type=str, default="data/input.jpg"help="Path to input image")
    parser.add_argument("--output"type=str, default="data/output.jpg"help="Path to output text file")
    parser.add_argument("--language"type=str, default="english")
    parser.add_argument("--mode"type=str, default="standard")
    parser.add_argument("--background"type=str, default="black", choices=["black""white"],help="background's color")
    parser.add_argument("--num_cols"type=int, default=300, help="number of character for output's width")
    parser.add_argument("--scale"type=int, default=2, help="upsize output")
    args = parser.parse_args()
    return args

本次将测试图片(city.jpg)放在data文件夹下:

使用命令行工具将图片转换为彩色的ASCII 图像,并将转换后的图片存放在data文件夹中,输入命令如下:

python img2img_color.py --input data/city.jpg --output data/output.jpg --mode complex --background white --num_cols 100

生成如下图片(output.jpg):

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments