使用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.pswp.cn/news/40057.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40057.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40057.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux github 倉庫管理常用操作

linux 的常用操作 linux 本地 ssh驗證連接github賬號本地倉庫連接遠程私有倉庫push/pull操作 Connecting to Github with ssh git local configuration If you are using git for the first time, configure the user name and email in the device. git config --global u…

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上可以“同時”進行許多個任務。但是它為用戶帶來方便的同時&#…

嵌入式Linux Qt5 (C++)開發欄目概述

本欄目開始介紹Linux系統下的Qt C程序開發,資源是以嵌入式為切入點(現在Linux系統下的Qt C程序開發好像就是應用于嵌入式),那就跟著一起學習Linux系統下的Qt C程序開發知識,再擴展一下嵌入式的知識吧。我這里默認已經熟…

php初解

php是什么? PHP,全稱 Hypertext Preprocessor ,中文翻譯“超文本預處理器”。 PHP是一種被廣泛應用的開源通用腳本語言,尤其適用于 Web 開發。 擁有快速,靈活,實用的特點,PHP能做任何事&#xf…

ORACLE中UNION、UNION ALL、MINUS、INTERSECT學習

1、UNION和UNION ALL的使用與區別 如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到union或者union all關鍵字。union的作用是將多個結果合并在一起顯示出來。 union和union all的區別是union會自動壓縮多個結果集合中的重復結果&#xff…

高速下載VisualGLM模型文件的解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

GO語言自底向上優化

Go Ballast(通過嘗試降低 GC 頻率以提高整體性能,針對所有 Go應用都適用) 首先我們明白GO語言GC觸發條件是由比例來觸發的。例如,當前存活內存10GB,觸發比例是100%,因此下次觸發GC的時候是當內存達到20GB的時候觸發GC。這種機制在…

碎片筆記|圖數據與圖神經網絡基礎介紹

前言:前段時間了解了一下圖神經網絡,本篇博客記錄一下相關知識,以備不時之需。 強烈推薦這篇博客(作者來自 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層也可…

使用 Redis 實現共享 Session 的高效解決方案

系列文章目錄 文章目錄 系列文章目錄前言一、為什么需要共享 Session?二、使用 Redis 實現共享 Session1.安裝和配置 Redis2.實現 Session 存取操作3.使用 Session 數據三、測試共享 Session四、注意事項總結前言 在分布式系統中,實現共享 Session 是一個重要的問題。本文將…

GT Code - 圖譯算法編輯器(集成QT、C++、C、Linux、Git、java、web、go、高并發、服務器、分布式、網絡編程、云計算、大數據項目)

目錄 項目概述 發文意義 項目介紹 功能分析 設計概要 功能展示 項目文檔 項目概述 “GT Code 圖譯算法編輯器”是一款跨平臺、輕量級的代碼編輯器,主要面向軟件開發人員,它實現了編輯、編譯、繪制代碼流程圖、生成調試演示動畫等功能,以…

go版本glog/klog 參數使用方法心得

問題 glog很好用,但是官方文檔卻很爛,對于很多參數并沒有做詳細說明,于是通過看源碼測試,總結出以下使用方法 可選參數 flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error in…

空間分析專屬 Python 學習資料

空間數據分析能夠幫助我們更好地理解地理空間中的模式和關系,從而為決策提供支持。例如,城市規劃者可以使用空間數據分析來確定城市發展的最佳方向,環境科學家可以使用空間數據分析來評估污染的影響,而商業分析師可以使用空間數據…