30行代碼實現圖片轉字符畫

安裝PIL圖像處理庫

PIL庫是一個用於處理圖像的庫

pip install PIL

知識點介紹

  • 灰度值

把白色與黑色之間按對數關係分成若干級,稱爲“灰度等級”。範圍一般從0到255,白色爲255,黑色爲0,故黑白圖片也稱灰度圖像,在醫學、圖像識別領域有很廣泛的用途

  • RGB值

RGB色彩模式是工業界的一種顏色標準,是通過對紅®、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍三個通道的顏色,這個標準幾乎包括了人類視力所能感知的所有顏色,是運用最廣的顏色系統之一。

  • 用RGB值計算灰度值
  1. 浮點算法:Gray=R0.3+G0.59+B*0.11
  2. 整數方法:Gray=(R30+G59+B*11)/100
  3. 移位方法:Gray =(R28+G151+B*77)>>8
  4. 平均值法:Gray=(R+G+B)/3

代碼實現

from PIL import Image
#導入圖片
im=Image.open('e:/img.jpg')
#獲取圖片的長、寬,單位爲像素點
w,h=im.size

#創建起始文本
text=''

#創建一個含有128個字符用於匹配灰度值的列表(256個以內,字符越多,匹配越精確)
element='''ab就c按d人e說f的g華hi點jklm查n碼o好還p你q高r號st能u不v它w太x秀y叫z而1爾2二哥3圖4一5搭邊6草7以89考0行!好@能#不O吧$把K大%天^&胡*虎(龍)非_飛+配`陪~,掉.第/除<蟲>新?牛;和':人"殺[會]傻\啥{龍}|我'''
element=list(element)

for i in range(h):
    for j in range(w):
        #獲取每一個像素點的RGB值,用於合成灰度值
        R,G,B=im.getpixel((j,i))
        #粗略求灰度值的公式
        Gray=int((R*30+G*59+B*11)/100)
        #讓準備的字符與灰度值形成對應關係(粗略對應)
        cup=int(Gray/len(element))
        if cup == int(255/len(element)):
            text+=' '
        else:
            #向文本中添加與灰度值對應的字符
            text += element[cup]
    text+='\n'
#將文本保存到TXT文件中
with open('ascii.txt','w') as fp:
    fp.write(text)

效果展示

圖一
在這裏插入圖片描述

圖二
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章