2022 Hackathon: 字符画 示例程序与帮助

<<<< 返回赛题

示例程序

在运行程序前需要安装依赖:numpy与Pillow,在命令提示符中输入:(不含$

1
$ pip install numpy Pillow

示例程序如下(在这里也可以下载),其中只实现了图片转灰度字符画的核心步骤,你可以完善该程序,优化生成的字符画的效果,或者参考在线资料从零编写自己的程序。

代码中使用的trophy.png是emoji“🏆”(奖杯)在微软的部分产品中的显示效果。生成字符画时需要对比明显、尺寸较小、色彩简单且边缘清晰的图像,所以选择了这张图作为演示。你可以在 Emojipedia中找到更多类似的图片作为测试图片。trophy.png如下:

对这个程序提出几点可改进之处,仅供参考:

  • 【重要】查阅Pillow 库的官方文档,在生成字符画之前缩小图像到合适的尺寸
  • 等宽字体中一个半角字符的宽高比大约是1:2,因此在横向需要用2个字符才能代替1个像素
  • 对输入图像进行预处理,例如增强图像的对比度等
  • 使用-\|/等字符突出图像边缘
  • 尝试使用方块元素代替ascii字符组成字符画
  • 使用命令行参数控制程序(如另一题的gameofLife.py,可能会用到python标准库中的argparse模块)
  • 使用colorama模块在命令行中创建彩色字符画