使用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)# 如果该像素格子不是白色,则变量+1if 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 的字符各一个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/40057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言ggplot2 | R语言绘制物种组成面积图(三)

📋文章目录 面积图简介准备数据集加载数据集数据处理数据可视化 利用R语言绘制物种组成图。本文以堆叠面积图的方式与大家分享。 面积图简介 面积图又叫区域图。它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充&…

设计模式之单例设计模式

单例设计模式 2.1 孤独的太阳盘古开天,造日月星辰。2.2 饿汉造日2.3 懒汉的队伍2.4 大道至简 读《秒懂设计模式总结》 单例模式(Singleton)是一种非常简单且容易理解的设计模式。顾名思义,单例即单一的实例,确切地讲就是指在某个系统中只存在…

【算法题】螺旋矩阵III (求解n阶蛇形矩阵)

一、问题的提出 n阶蛇形矩阵的特点是按照图1所示的方式排列元素。n阶蛇形矩阵是指矩阵的大小为nn,其中n为正整数。 题目背景 一个 n 行 n 列的螺旋矩阵可由如图1所示的方法生成,观察图片,找出填数规律。填数规则为从 1 开始填到 nn。 图1 …

【配置环境】Linux下安装MySQL

目录 一,环境 二,安装步骤 1.使用包管理器安装MySQL 2.配置MySQL的安全选项 3.设置root用户使用密码进行身份验证(可选) 三,拓展知识 1.如何修改MySQL的密码策略? 2.实现连接MySQL数据库的测试代码…

TiDB基础介绍、应用场景及架构

1. 什么是newsql NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。 NewSQL是指这样一类新式的关系型数据库管理系统,针对OLTP(读-写&…

经验分享:企业数据仓库建设方案总结!

导读 在企业的数字化转型浪潮中,数据被誉为“新时代的石油”,而数据仓库作为数据管理与分析的核心基础设施,在企业的信息化建设中扮演着重要的角色。本文将深入探讨企业数据仓库建设过程中所遇到的问题以及解决经验,为正在筹备或…

进程/线程上下文切换会用掉你多少CPU?

进程是操作系统的伟大发明之一,对应用程序屏蔽了CPU调度、内存管理等硬件细节,而抽象出一个进程的概念,让应用程序专心于实现自己的业务逻辑既可,而且在有限的CPU上可以“同时”进行许多个任务。但是它为用户带来方便的同时&#…

碎片笔记|图数据与图神经网络基础介绍

前言:前段时间了解了一下图神经网络,本篇博客记录一下相关知识,以备不时之需。 强烈推荐这篇博客(作者来自 Google Research),个人认为是图神经网络基础入门的不二选择! 目录 一、图数据1.1 定义…

Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流

场景 Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览: Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览_nginx rtmp 海康摄像头_霸道流氓气质的博客-CSDN博客 上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。 如果在其它业务场景…

TCP/IP协议组

TCP/IP通信协议是目前最完整、使用最广泛的通信协议。它的魅力在于可使不同硬件结构、不同操作系统的计算机相互通信。TCP/IP协议既可用于广域网,也可用于局域网,它是Internet/Intranet的基石。TCP/IP通信协议事实上是一组协议。 TCP/IP协议可分为5层也可…

GT Code - 图译算法编辑器(集成QT、C++、C、Linux、Git、java、web、go、高并发、服务器、分布式、网络编程、云计算、大数据项目)

目录 项目概述 发文意义 项目介绍 功能分析 设计概要 功能展示 项目文档 项目概述 “GT Code 图译算法编辑器”是一款跨平台、轻量级的代码编辑器,主要面向软件开发人员,它实现了编辑、编译、绘制代码流程图、生成调试演示动画等功能,以…

使用Java服务器实现UDP消息的发送和接收(多线程)

目录 简介:1. 导入必要的库2. 创建服务器端代码3. 创建客户端代码4. 实现多线程处理5. 测试运行示例代码:函数说明服务器端代码说明:客户端代码说明: 总结: 简介: 在本篇博客中,我们将介绍如何…

genism word2vec方法

文章目录 概述使用示例模型的保存与使用训练参数详解([原链接](https://blog.csdn.net/weixin_44852067/article/details/130221655))语料库训练 概述 word2vec是按句子来处理的Sentences(句子们) 使用示例 from gensim.models import Word2Vec #sent…

《起风了》C++源代码

使用方法 Visual Studio、Dev-C、Visual Studio Code等C/C创建一个 .cpp 文件&#xff0c;直接粘贴赋值即可。 #include <iostream> #include <Windows.h> #pragma comment(lib,"winmm.lib") using namespace std; enum Scale {Rest 0, C8 108, B7 …

线性代数(四) 特征值相似矩阵

前言 前面主要讲述的是方程组和矩阵的关系&#xff0c;现在了解下矩阵和矩阵的关系 方阵的特征值与特征向量 假设A为n阶方阵&#xff0c;对于一个数 λ \lambda λ 若存在&#xff1a;非零列向量 α \alpha α&#xff0c;使得&#xff1a; A α ⃗ λ α ⃗ A\vec{\alp…

2022年电赛C题——小车跟随行驶系统——做题记录以及经验分享

前言 自己打算将做过的电赛真题&#xff0c;主要包含控制组的&#xff0c;近几年出现的小车控制题目&#xff0c;自己做过的真题以及在准备电赛期间刷真题出现的问题以及经验分享给大家 这次带来的是22年电赛C题——小车跟随行驶系统&#xff0c;这道题目指定使用的是TI的单片…

spring ico容器 spring注入方式 spring与tomcat整合

一、简介 1、什么是spring&#xff1f; Spring是一个开源的轻量级Java应用开发框架&#xff0c;它提供了一种简单、高效、灵活的方式来构建企业级应用程序。Spring框架的核心特点是依赖注入&#xff08;Dependency Injection&#xff09;和面向切面编程&#xff08;Aspect-Ori…

SpringBoot整合Redis完整篇

SpringBoot整合Redis完整篇 1、在springboot项目的pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

分布式锁有哪些应用场景和实现?

电商网站都会遇到秒杀、特价之类的活动&#xff0c;大促活动有一个共同特点就是访问量激增&#xff0c;在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化&#xff0c;但整体的并发还是平时的数倍以上&#xff0c;参加活动的商…

WebRTC音视频通话-实现GPUImage视频美颜滤镜效果iOS

WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话&#xff0c;可以查…