乌班图 python 图片转为字符画

本文介绍了一种使用Python和PIL库将彩色图像转换为字符画的方法。通过将RGB颜色值映射到灰度值,并使用特定字符集表示不同灰度级别的技术,可以将图像转化为文本形式的艺术品。
部署运行你感兴趣的模型镜像

实验楼链接:https://www.shiyanlou.com/courses/370
实验准备:
PIL 是一个 Python 图像处理库,是本课程使用的重要工具,使用下面的命令来安装 pillow(PIL)库:
sudo pip3 install --upgrade pip
sudo pip3 install pillow
实验原理:
彩色转化生成单色怎么会有区分度呢??这里用到了灰度值的概念
灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像
另外一个概念是 RGB 色彩:RGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一
我们可以使用灰度值公式将像素的 RGB 值映射到灰度值(注意这个公式并不是一个真实的算法,而是简化的 sRGB IEC61966-2.1 公式,真实的公式更复杂一些,不过在我们的这个应用场景下并没有必要):
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b
我们可以创建一个不重复的字符列表,灰度值小(暗)的用列表开头的符号,灰度值大(亮)的用列表末尾的符号
开始实验:
安装好pillow之后,创建py文件,完整PY代码命令下载获取
wget http://labfile.oss.aliyuncs.com/courses/370/ascii.py

# -*- coding=utf-8 -*-

from PIL import Image
import argparse

#命令行输入参数处理
parser = argparse.ArgumentParser()

parser.add_argument('file')     #输入文件
parser.add_argument('-o', '--output')   #输出文件
parser.add_argument('--width', type = int, default = 80) #输出字符画宽
parser.add_argument('--height', type = int, default = 80) #输出字符画高

#获取参数
args = parser.parse_args()

IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

# 将256灰度映射到70个字符上
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

    unit = (256.0 + 1)/length
    return ascii_char[int(gray/unit)]

if __name__ == '__main__':

    im = Image.open(IMG)
    im = im.resize((WIDTH,HEIGHT), Image.NEAREST)

    txt = ""

    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j,i)))
        txt += '\n'

    print(txt)

    #字符画输出到文件
    if OUTPUT:
        with open(OUTPUT,'w') as f:
            f.write(txt)
    else:
        with open("output.txt",'w') as f:
            f.write(txt)

下载一个图片
运行文件:python py文件名 图片名
然后vim output.txt
即可看到转好的画

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 如何在Ubuntu上运行Python脚本 要在Ubuntu系统中成功运行Python脚本,需遵循一系列操作流程。以下是具体方法: #### 方法一:通过`python`或`python3`命令直接运行 确保已安装Python环境后,可通过以下命令检查版本号: ```bash python --version ``` 如果显示的是Python 2.x版本,则建议使用`python3`命令替代[^1]。 创建一个名为`script.py`的Python脚本文件,并在其内部写入简单的打印语句作为测试内容: ```python print("Hello, Ubuntu!") ``` 随后,在终端中切换到该脚本所在的路径并执行如下命令: ```bash python script.py ``` 或者对于Python 3版本: ```bash python3 script.py ``` #### 方法二:赋予脚本可执行权限并通过相对路径调用 此法适用于Linux/Unix类操作系统用户。首先利用文本编辑工具(如Vim)建立并修改目标`.py`扩展名的文件,例如命名为`hello_world.py`,其首行为指定解释器所在位置: ```python #!/usr/bin/env python3 print('Hello from executable script!') ``` 接着给予此文件执行权能,采用下面这条指令完成设置: ```bash chmod a+x hello_world.py ``` 最后借助`.`斜杠组合形式启动它即可: ```bash ./hello_world.py ``` 这种方式无需显式声明使用的Python版本,因为它已经在脚本头部定义好了[^3]。 #### 方法三:将脚本放置于PATH环境变量覆盖范围内的目录里 为了让编写的Python应用程序能够在任意地方被触发开启,可以把它们移至由`echo $PATH`返回结果列举出来的某个子文件夹底下。比如假设个人用户的家目录下的`bin`是一个合法选项的话,那么可以这样处理: ```bash cp your_script.py ~/bin/ ``` 之后就能像对待常规命令那样单纯键入名称来激活对应的Python应用了[^4]。 ### 注意事项 无论采取哪种途径,请务必确认当前环境中存在有效的Python解析引擎支持;另外考虑到不同发行版之间可能存在细微差异,实际动手前最好查阅官方文档获取最新指导方针。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值