Python统计字符内容的占比的实现

 更新时间:2023年08月17日 11:13:12   作者:何中应  
本文介绍了如何使用Python统计字符占比,包括字符串中字母、数字、空格等字符的占比,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

说明:如果有自己动手做过字符动画,会知道字符动画的“灵动性”核心在于使用的字符集。

简单来说,动画转为字符动画,原理是将动画转为灰阶图,灰度范围是0~255,然后将对应灰度的像素点转为对应比值的字符。这里的对应比值,就是要求使用的字符集中的字符,亮度应该均匀。

字符的亮度,就取决于字符部分占字符全部部分的占比,占比越高,越亮,如下;

本文介绍,如何使用Python程序计算这个比值;

准备字符图

首先,准备你需要的字符图片,图片大小应该仅包含字符内容,不能多,不能少;

以下图片是我在Windwos画图工具里,敲一个字符,放到最大后,手动一个个截出来的,可能会有偏差,应该用PS会更好;

编码

写一个Python程序,做两件事:

  • 读取图片;
  • 识别并统计非白色像素点RGB(255,255,255)的个数;
  • 计算白点与所有像素点的占比;

如下:

import os
from PIL import Image
# 通过图片统计字符占比
def pic_rate(file_path):
    # 打开图片
    im = Image.open(file_path)
    # 加载
    pix = im.load()
    # 获取图片的宽度,高度
    width = im.size[0]
    height = im.size[1]
    # 设置一个变量,用以表示"非白"像素格子的数量
    not_white = 0
    # 遍历图片的每一个像素
    for x in range(width):
        for y in range(height):
            # 取下像素格子的色值,并保存
            r, g, b = pix[x, y]
            rgb = (r, g, b)
            # 如果该像素格子不是白色,则变量+1
            if rgb != (255, 255, 255):
                not_white = not_white + 1
    # 返回"非白"格子占字符总格子数(width * height)的比值,并转换为字符串且保留前四位
    return str((not_white / (width * height)))[:4]
if __name__ == "__main__":
    # 输入图片路径并读取路径下的所有字符文件
    path = r'D:\ShareMeeting\字母字符占比'
    file_list = os.listdir(path)
    # 设置一个字典记录每一个字符的占比
    dic = {}
    # 循环执行pic_rate方法
    for file in file_list:
        dic[file] = pic_rate(path + '\\' + file)
    # 按字符比值从低到高排序
    dic_sort = (sorted(dic.items(), key=lambda x: x[1]))
    # 打印
    for num in dic_sort:
        print(num)

执行结果如下,可供参考;

总结

所以,如果你需要制作一张漂亮的字符动画,就可以根据上面统计出来的字符占比,合理安排字符集的顺序。比如你要用10个字符来作为字符集,就可以取占比为0.05、0.10、0.15、0.20……0.50 的字符各一个。

到此这篇关于Python统计字符内容的占比的实现的文章就介绍到这了,更多相关Python统计字符占比内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解python3中zipfile模块用法

    详解python3中zipfile模块用法

    本篇文章给大家分享了关于python3中zipfile模块的详细用法以及技术难点解析,有兴趣的朋友跟着学习下吧。
    2018-06-06
  • Django+simpleui实现文件上传预览功能(详细过程)

    Django+simpleui实现文件上传预览功能(详细过程)

    该文章详细介绍了如何在Django框架中实现文件上传、预览和下载功能,并使用SimpleUI美化Django后台界面,通过创建模型、表单、视图和配置URL,实现了文件的存储和管理,同时,文章还提到了配置媒体文件、创建模板以及在生产环境中的部署注意事项,感兴趣的朋友一起看看吧
    2025-02-02
  • 如何基于python对接钉钉并获取access_token

    如何基于python对接钉钉并获取access_token

    这篇文章主要介绍了如何基于python对接钉钉并获取access_token,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python打造智能批量重命名工具的详细指南

    Python打造智能批量重命名工具的详细指南

    因办公要求,经常需要对众多、各类文件(夹)进行重命名,人数少还好说,人数大就是一个稍微复杂的问题了,所以本文我们就来使用Python开发一个智能批量重命名工具吧
    2025-07-07
  • Python的多态性实例分析

    Python的多态性实例分析

    这篇文章主要介绍了Python的多态性,以实例形式深入浅出的分析了Python在面向对象编程中多态性的原理与实现方法,需要的朋友可以参考下
    2015-07-07
  • 详解python代码模块化

    详解python代码模块化

    今天给大家带来的是关于Python的相关知识,文章围绕着python代码模块化展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 用python找出那些被“标记”的照片

    用python找出那些被“标记”的照片

    这篇文章主要介绍了用python找出那些被“标记”的照片的相关资料,需要的朋友可以参考下
    2017-04-04
  • Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解

    Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解

    这篇文章主要介绍了Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法,结合实例形式详细分析了Python GUI编程中tkinter控件的原理、用法及相关操作注意事项,需要的朋友可以参考下
    2020-03-03
  • Python实现自动化调用鼠标和键盘

    Python实现自动化调用鼠标和键盘

    这篇文章主要为大家详细介绍了如何使用Python实现自动化调用鼠标和键盘,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • 在OpenCV里使用Camshift算法的实现

    在OpenCV里使用Camshift算法的实现

    这篇文章主要介绍了在OpenCV里使用Camshift算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论