python3_图像

发布时间 2023-10-30 18:39:10作者: 小鱼小鱼hi

图像读取的Image.open()和cv2.imread()的区别-CSDN博客

报错:ModuleNotFoundError: No module named 'PIL'解决方法-CSDN博客

wordcloud: raise ValueError(“Only supported for TrueType fonts“)_是 傻羊啊的博客-CSDN博客

环境配置:

# pip install pillow

 

from PIL import Image

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

#im = Image.open('qq.png')   # 这里如果照片文件在脚本路径下只用文件名是不行的,会报错(实际是去PIL\image.py同路径下找文件)
im = Image.open('D:\code\my_learn\qq.png')  
im = im.convert('L')    # 转为黑白图, 每个像素都一个灰度值,从0到255, 0是黑色, 255是白色
# im.save('D:\code\my_learn\\t.jpeg')   # 这里也是,如果不加绝对路径,是保存到PIL\image.py同路径下
im.save('D:\code\my_learn\\t.jpeg')   # 保存图片只是为了演示黑白照片

def get_char(gray):
    if gray >= 240:
        return ' '   # 灰度值大于240的,转成空字符串,这样看着舒服,其余的,按比例映射到字符集上
    else:
        return char_set[int(gray/((256.0 + 1)/len(char_set)))]

text = ''
for i in range(im.height):
    for j in range(im.width):
        gray = im.getpixel((j, i))      # 每个像素点都可以通过im.getpixel方法获得灰度值。 返回值可能是一个int, 也可能是一个三元组
        if isinstance(gray, tuple):      # isinstance(object, classinfo) 判断object与classinfo的类型是否相同,相同返回True,否则返回false
            gray = int(0.2126 * gray[0] + 0.7152 * gray[1] + 0.0722 * gray[2])

        text += get_char(gray)    # 灰度值转成字符
    text += '\n'

with open('D:\code\my_learn\pic.txt', 'w')as f:
    f.write(text)
    
'''
强调一点,生成的txt文件不要打开查看,那样你看不到一个完整的字符画,
在浏览器里打开字符画,这样才可以看到完整的,
如果你把缩小的比例再放大一点,生成的字符画就会失去很多细节,一般来说,宽80就可以了,高度看情况调整。
'''