python图片转文字

转载

先将图片每个像素的hsv(色相,饱和度,明度)值转化为可读取对象
再将图像按v用取平均值的方法进行压缩,最后根据压缩后图像的每个像素点的v值转换成字符进行输出
scale表示图片的压缩倍率,压缩后图像的宽度和高度都为原图的除以scale

fit_table表示转化后的图片由哪些字符构成,按明度从低到高排列,长度应在1-255之间,长度越长图像对比度越高,画质越好

from PIL import Image
from math import ceil
 
# 图片压缩倍率
scale = 1
 
# 获取图像hsv
img = Image.open('test.png')
hsv = img.convert('HSV').load()
new_img = [[0 for i in range(ceil(img.width / scale))] for x in range(ceil(img.height / scale))]
 
# 图像压缩
for x in range(0, img.width, scale):
    for y in range(0, img.height, scale):
        _v = 0
        num = 0
        for x1 in range(scale):
            for y1 in range(scale):
                if x + x1 < img.width and y + y1 < img.height:
                    _v += hsv[x + x1, y + y1][2]
                    num += 1
        new_img[y // scale][x // scale] = _v // num
 
# 转化字符(明度从低到高排列)
fit_table = ['魍', '恼', '且', '不', '一']
text = ''
 
# 转文本
for y in new_img:
    for x in y:
        text += fit_table[x // (255 // len(fit_table) + 1)]
    text += '\n'
print(text)
————————————————
版权声明:本文为CSDN博主「m0_73300271」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73300271/article/details/126916119
posted @ 2022-12-02 13:44  LazyTiming  阅读(499)  评论(0编辑  收藏  举报