本篇主要介紹了Python實現圖片轉字符畫的範例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
字元畫真的很有意思,將圖片中的像素用字元代替,就產生了字元畫。
但是像素是有顏色深淺的,我們如何將帶有不同顏色的像素編碼為對應的字元呢?
轉換方法:
將彩色圖片轉換為灰階圖
根據顏色深淺的RGB值(值域為0到255,其中0為黑色,255為白色)
涉及自己喜歡的字元集合
#依字元集順序及字元集長度,由RGB值編碼為對應的字元。
RGB
RGB色彩模式是透過對紅(R)、綠色(G)、藍色(B)三個色彩通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍三個通道的顏色,這個標準幾乎包括了人類視力所能感知的所有顏色。通常情況下,RGB各有256級亮度,以數字表示為從0、1、2...直到255。注意雖然數字最高是255,但0也是數值之一,因此共256級。
灰階圖
灰階圖是指只含亮度訊息,不含色彩訊息的圖象,就像我們平常看到的黑白照片:亮度由暗到明,變化是連續的。 因此,要表示灰階圖,就需要把亮度值進行量化。通常分割成0到255共256個級別,其中0最暗(全黑),255最亮(全白)。在表示顏色的方法中,除了RGB外,從彩色圖片中的RGB 到灰階值Gray 轉換公式為:
#在PIL中,从模式“RGB”转换为“L”模式(灰度模式) Gray = 0.299R+0.587G+0.114B
例如我們用小寫英文26字母作為我們的字符集。字元集容量為26(一個字元對應的值區間寬度= 256/字元集長度)這裡的區間寬度為256/26=9.8),
#gray與字元集對應關係:
gray區間對應字元
#
[0.0, 9.8)这|a [9.8, 19.6)|b [19.6, 29.4)|c ...|... [225.6, 235.4]|x [235.4, 245.2]|y [245.2, 255.0]|z#RGB轉字元函數
char_string = 'abcdefghijklmnopqrstuvwxyz' def rgb2char(r, g, b): length = len(char_string) gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # 每个字符对应的gray值区间宽度 unit = (256.0 + 1) / length # gray值对应到char_string中的位置(索引值) idx = int(gray / unit) return char_string[idx]######預處理#########如果尺寸太大或太小,導致我們打開txt檔案無法辨識出字元畫。所以要先將圖片尺寸調整合適。這裡要注意,大家可依需求更改伸縮係數delta係數############
from PIL import Image #预处理(将图片尺寸压缩,并转为灰度图) def preprocess(img_path,delta=100): img = Image.open(img_path) # 获取图片尺寸 width, height = img.size # 获取图片最大边的长度 if width > height: max = width else: max = height # 伸缩倍数scale scale = max / delta width, height = int(width / scale), int(height / scale) img = img.resize((width, height)) return img######圖片轉字########讀取圖片,根據座標取得此像素的rgb元組,並編碼為字元############
def img2char(img_obj, savepath): txt = '' width, height = img_obj.size # 获取像素点的rgb元组值,如(254, 0, 0),并将其转化为字符 for i in range(height): line = '' for j in range(width): line += rgb2char(*img_obj.getpixel((j, i))) txt = txt + line + '\n' # 保存字符画 with open(savepath, 'w+', encoding='utf-8') as f: f.write(txt) img_obj = preprocess(img_path) img2char(img_obj, savepath)###插入圖片################## #### ###改變char_string,變換你想要的效果################### ###
以上是如何利用Python實現圖片轉字符畫詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

列表sandnumpyArraysInpythonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,with withOverHeadeBheadaroundAroundaround64byty64-bitsysysysysysysysysyssyssyssyssysssyssys2)

toensurepythonscriptsbehavecorrectlyacrycrosdevelvermations,分期和生產,USETHESTERTATE:1)Environment varriablesForsimplesettings,2)configurationfilesfilesForcomPlexSetups,3)dynamiCofforComplexSetups,dynamiqualloadingForaptaptibality.eachmethodoffersuniquebeneiquebeneqeniquebenefitsandrefitsandrequiresandrequiresandrequiresca

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。