国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Python實現(xiàn)圖片轉(zhuǎn)字符畫

2021-11-04 14:59
電腦報 2021年41期
關(guān)鍵詞:像素點灰度字符

前段時間我們學(xué)習(xí)了很多Python的基礎(chǔ)語法,但是對于各種庫的使用還是一知半解的,接下來我們挑選出幾個重要庫,通過有意思的小項目了解這些庫的知識點。

在Python中,有一個優(yōu)秀的圖像處理框架叫作PIL庫,今天我們利用PIL庫將圖片變成一幅黑白字符畫。

字符畫是一系列字符的組合,我們可以把字符看作是比較大塊的像素,一個字符能表現(xiàn)一種顏色,字符的種類越多,可以表現(xiàn)的顏色也越多,圖片也會更有層次感。

如果我們想要手工繪制出字符畫,首先要有扎實的美術(shù)基礎(chǔ),其次還要花費大量的時間和精力。但是我們可以使用Python,只需要幾行代碼,就能夠?qū)⒁粡垐D片輕而易舉地轉(zhuǎn)化為一個字符畫。

這幅小豬佩奇就是利用Python的PIL庫,通過字符代替顏色的方法完成的字符畫。

我們知道一張RGB模式的圖片是由很多個像素點組成的,而每一個像素點都有不同的顏色,而這個顏色可以由三個值表示(RGB,范圍0-255),這三個值對應(yīng)組成這種顏色的三原色百分比。所以RGB模式總共可以表現(xiàn)256×256×256=16777216種顏色。如果可以將每個像素根據(jù)顏色找一個字符替換,這樣就能形成一個字符圖畫了。

那么問題來了,我們沒有這么多種字符來一一對應(yīng)每種顏色啊,這時就要引入灰度概念了,對于黑白圖像中的像素我們可以用灰度值表示其顏色深度,范圍一般從0到255,白色為255,黑色為0。這種圖片也稱灰度圖像,我們可以通過RGB轉(zhuǎn)化灰度公式將像素的RGB值映射成灰度值。這個公式具體算法不止一種(常見的有三種),算出的結(jié)果也略有不同,有興趣的同學(xué)可以百度搜索一下其中的算法。

灰度值公式:Gray=0.2126×R+0.7152×G+0.0722×B

通過公式的轉(zhuǎn)換可以將256×256×256的顏色范圍減少到0-255的灰度范圍。但是256個數(shù)值范圍還是有點多了,難以用字符一一對應(yīng),不過稍微靈活變通一下,將兩到三個灰度值對應(yīng)為一個字符便可成功解決了。

首先導(dǎo)入Python圖片處理庫——PIL。自定義字符畫所需要使用的字符集是ascii_char,我選擇了其中70個字符,字符順序影響與灰度的對應(yīng)關(guān)系,可以根據(jù)字符畫的效果反復(fù)調(diào)整。

選擇一張需要字符畫的圖片,這里我選取了一張哆啦A夢的頭像,確定好字符畫的寬度和高度,考慮到字符本身的高寬比,為了美觀考慮圖片的寬度最好是高度的兩倍多一點。接下來我們需要定義一個get_chart函數(shù),此函數(shù)的目的是通過灰度來區(qū)分顏色塊。利用灰度值公式計算出不同的灰度對應(yīng)的不同字符。將需要的圖片導(dǎo)入到Python環(huán)境中,通過雙重for循環(huán)對圖像的像素點進(jìn)行遍歷,利用灰度值公式進(jìn)行灰度值轉(zhuǎn)換,輸出對應(yīng)的字符畫。程序運行后字符畫和原圖可以做一個對比,可以發(fā)現(xiàn)字符畫在一些細(xì)節(jié)上還可以優(yōu)化,比如根據(jù)字符的復(fù)雜程度調(diào)整list的順序,總的來說轉(zhuǎn)換過程還是達(dá)到了預(yù)期目的。

通過轉(zhuǎn)換哆啦A夢成為字符畫的案例我們又學(xué)會了一項新的技能,趕緊打開你的Python編輯器制作一幅有趣的字符畫吧,偷偷告訴你Python還可以制作GIF動態(tài)的字符動畫哦,還不趕緊去試試看。

猜你喜歡
像素點灰度字符
天津港智慧工作平臺灰度發(fā)布系統(tǒng)和流程設(shè)計
華為“灰度”哲學(xué)
Arduino小車巡線程序的灰度閾值優(yōu)化方案
正則表達(dá)式快速入門
圖片輕松變身ASCⅡ藝術(shù)畫
一種X射線圖像白點噪聲去除算法
基于灰度直方圖的單一圖像噪聲類型識別研究
基于canvas的前端數(shù)據(jù)加密
圖像采集過程中基于膚色理論的采集框自動定位
視頻監(jiān)視系統(tǒng)中字符疊加技術(shù)的應(yīng)用