首页
学习
活动
专区
工具
TVP
发布

Python将图片转化成文字

我们之前学过词云能将数据变成图片展示出来,那么今天我们就来看个不同的,将图片变成字符输出。

看个效果图:

文字输出:

那么下面我们来看看代码吧!

importargparse

fromPILimportImage

# 命令行输入参数处理

parser = argparse.ArgumentParser()

# 输入图片

parser.add_argument('file',

help='the input file')

# 输出文件

parser.add_argument('-o','--output',

help='the output text file')

# 输出字符画宽度

parser.add_argument('-w','--width',

type=int,default=40,

help='the width of the output, default is 40')

# 输出字符画高度

parser.add_argument('--height',

type=int,default=40,

help='the height of the output, default is 40')

# 获取参数

args = parser.parse_args()

IMG = args.file

WIDTH = args.width

HEIGHT = args.height

OUTPUT = args.output

str ="$@B%8&WM#*oahkbdpqw"\

"mZO0QLCJUYXzcvunxrjft/\|()"\

"1{}[]?-_+~i!lI;:,\"^`'. "

ascii_char =list(str)

# 将256 灰度映射到 70 个字符上

defget_char(r,g,b,alpha=256):

ifalpha ==:

return" "

length =len(ascii_char)

gray =int(0.2126*r +0.7152*g +0.0722*b)

# 每个字符对应的 gray 值区间宽度

unit = (256.0+1)/length

# gray值对应到 char_string 中的位置(索引值)

index =int(gray/unit)

returnascii_char[index]

if__name__ =="__main__":

im = Image.open(IMG)

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

txt =""

foriinrange(HEIGHT):

forjinrange(WIDTH):

txt += get_char(*im.getpixel((j,i)))

txt +='\n'

print(txt)

ifOUTPUT:

withopen(OUTPUT,'w')asf:

f.write(txt)

else:

withopen('output.txt','w')asf:

f.write(txt)

“扫一扫有惊喜”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181117G09GUE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券