Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的示例代碼
初學(xué)Python,在網(wǎng)上看到Python圖片轉(zhuǎn)字符畫(huà)的教程,我也來(lái)嘗試下。
首先我們要用到Python的PIL庫(kù)的Image模塊,PIL(Python Imaging Library)庫(kù)是Python的一個(gè)圖像處理庫(kù)。想了解PIL的詳細(xì)功能介紹,可參考PIL的官方文檔(雖然我也沒(méi)看過(guò),不過(guò)還是貼上來(lái)):http://effbot.org/imagingbook/
圖片轉(zhuǎn)字符畫(huà)的關(guān)鍵思想是將圖片的灰度值與你自己設(shè)定的字符集之間建立映射關(guān)系,不同區(qū)間的灰度值對(duì)應(yīng)不同的字符,之后將圖片每一個(gè)像素對(duì)應(yīng)的字符打印出來(lái)就是我們要的字符畫(huà)啦~
這里提供兩種方法:
先將彩色圖片轉(zhuǎn)換為黑白圖片,然后直接將每個(gè)像素點(diǎn)的灰度值與字符集建立映射。
獲取圖片的RGB值,利用公式:
Gray = R*0.299 + G*0.587 + B*0.114
計(jì)算可得每個(gè)像素點(diǎn)的灰度值,之后再建立映射即可。
# -*- coding: utf-8 -*-
from PIL import Image
codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. '''#生成字符畫(huà)所需的字符集
count = len(codeLib)
def transform1(image_file):
image_file = image_file.convert("L")#轉(zhuǎn)換為黑白圖片,參數(shù)"L"表示黑白模式
codePic = ''
for h in range(0,image_file.size[1]): #size屬性表示圖片的分辨率,'0'為橫向大小,'1'為縱向
for w in range(0,image_file.size[0]):
gray = image_file.getpixel((w,h)) #返回指定位置的像素,如果所打開(kāi)的圖像是多層次的圖片,那這個(gè)方法就返回一個(gè)元組
codePic = codePic + codeLib[int(((count-1)*gray)/256)]#建立灰度與字符集的映射
codePic = codePic+'\r\n'
return codePic
def transform2(image_file):
codePic = ''
for h in range(0,image_file.size[1]):
for w in range(0,image_file.size[0]):
g,r,b = image_file.getpixel((w,h))
gray = int(r* 0.299+g* 0.587+b* 0.114)
codePic = codePic + codeLib[int(((count-1)*gray)/256)]
codePic = codePic+'\r\n'
return codePic
fp = open(u'暴走.jpg','rb')
image_file = Image.open(fp)
image_file=image_file.resize((int(image_file.size[0]*0.75), int(image_file.size[1]*0.5)))#調(diào)整圖片大小
print u'Info:',image_file.size[0],' ',image_file.size[1],' ',count
tmp = open('tmp.txt','w')
tmp.write(transform1(image_file))
tmp.close()
原圖

轉(zhuǎn)換為字符畫(huà)(注:在記事本打開(kāi)時(shí)記得取消自動(dòng)換行,下圖字體:宋體 字號(hào):小六)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫(huà)
- Python簡(jiǎn)單實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的實(shí)例項(xiàng)目
- python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的完整代碼
- Python 實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的示例(靜態(tài)圖片,gif皆可)
- Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的代碼實(shí)例
- Python將圖片轉(zhuǎn)換為字符畫(huà)的方法
- python Opencv將圖片轉(zhuǎn)為字符畫(huà)
- Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)的示例
- 利用Python?實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)
相關(guān)文章
Python實(shí)現(xiàn)常見(jiàn)的回文字符串算法
這篇文章主要介紹了Python實(shí)現(xiàn)常見(jiàn)的回文字符串算法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
Python畫(huà)圖常用代碼總結(jié)大全(20個(gè)畫(huà)圖代碼現(xiàn)拿現(xiàn)用)
Python是一種高級(jí)編程語(yǔ)言,擁有豐富的圖形庫(kù),可以完成繪制各種類(lèi)型的圖形任務(wù),下面這篇文章主要給大家介紹了關(guān)于Python畫(huà)圖常用代碼的相關(guān)資料,文中介紹的這20個(gè)畫(huà)圖代碼可以現(xiàn)拿現(xiàn)用,需要的朋友可以參考下2023-06-06
Python實(shí)現(xiàn)計(jì)算AUC的三種方式總結(jié)
AUC(Area?under?curve)是機(jī)器學(xué)習(xí)常用的二分類(lèi)評(píng)測(cè)手段,直接含義是ROC曲線下的面積。本文總結(jié)了Python語(yǔ)言實(shí)現(xiàn)計(jì)算AUC的三種方式,感興趣的可以學(xué)習(xí)一下2022-07-07
python re的findall和finditer的區(qū)別詳解
這篇文章主要介紹了python re的findall和finditer的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python技巧之變長(zhǎng)和定長(zhǎng)序列拆分
這篇文章主要給大家分享的是Python技巧之變長(zhǎng)和定長(zhǎng)序列拆分,Python中的任何序列(可迭代的對(duì)象)都可以通過(guò)賦值操作進(jìn)行拆分,包括但不限于元組、列表、字符串、文件、迭代器、生成器等。想了解更多詳細(xì)的小伙伴請(qǐng)參考下面文章內(nèi)容2021-12-12
Python學(xué)習(xí)之異常中的finally使用詳解
這篇文章主要為大家介紹一下Python異常語(yǔ)法中的另一個(gè)成員—finally,通過(guò)學(xué)習(xí)finally,可以幫助我們更好的處理異常,快來(lái)跟隨小編一起學(xué)習(xí)一下吧2022-03-03

