• Python 图像转字符画


    代码

    # -*- coding: utf-8 -*-
    # @Author  : Lan126
    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;:,"^`'. ")
    
    
    # 将灰度映射到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 / length
        return ascii_char[int(gray/unit)]
    
    
    if __name__ == "__main__":
        im = Image.open(IMG)
        im = im.resize((WIDTH, HEIGHT), Image.NEAREST)  # python 参数省略...
    
        txt = ""
    
        for i in range(HEIGHT):
            for j in range(WIDTH):
                txt += get_char(*im.getpixel((j, i)))   # pixel value 和 可变参数
            txt += "
    "
    
        print(txt)
    
        # 字符画输出到文件
        if OUTPUT:
            with open(OUTPUT, 'w') as f:
                f.write(txt)
        else:
            with open("output.txt", 'w') as f:
                f.write(txt)
    
    
    

    学到了什么

    pillow库是来处理图像的库
    可以用其中的Image模块来打开一张图片(open函数)并改变其大小(resize)
    对每一块像素进行灰度的映射,总共的灰度值是0~255,映射到字符list上并加到字符串txt上,这里又涉及可变参数的知识
    然后用with操作打开一个文件,这样无论发生什么总能正确关闭一个文件
    2.
    如何查看python相关文档

  • 相关阅读:
    正则匹配英文和数字
    python 正则匹配小数
    Error loading MySQLdb module: No module named 'MySQLdb'
    使用STL的next_permutation函数
    C++模板类之pair
    【转】Java迭代:Iterator和Iterable接口
    经典DFS问题实践
    Java 算法(背包,队列和栈)
    深度学习caffe测试代码c++
    opencv测试代码
  • 原文地址:https://www.cnblogs.com/tclan126/p/8804654.html
Copyright © 2020-2023  润新知