python识别图片生成字符模式
此python文件来自D7哥, 放在这里备份.
- 用法
1 2 3 | python3 PIL\&argparse.py 1.jpg -o test .txt --width 300 --height 300 python3 xxx.py 要识别的img 输出到文件 宽度 高度 |
- 程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # 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 = 60 ) #输出字符画宽 parser.add_argument( '--height' , type = int , default = 10 ) #输出字符画高 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;:,\"^`'. " ) 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) |
- 展示