利用python把圖片轉換成代碼


詳細步驟如下:

#導入cv模塊
import cv2 as cv
import random
import numpy as np
# # =================================存取圖像=====================================
# 60號宋體字母占用字符比較
xiangsi={
    "I":198,"V":229,"L":230,"U":235,"C":236,"Y":236,"T":245,"J":248,"A":262,"X":265,"Z":270,"N":276,"G":281,"F":284,"P":303,"O":306,"E":322,"K":339,"D":357,"W":373,"R":380,"H":384,"Q":391,"B":391,"S":292,"M":432
}

I_value=180   # I映射為不同的值表示亮度,
M_value=50   # M映射為50
x=(M_value-I_value)/(xiangsi['M']-xiangsi['I'])
b=I_value-xiangsi['I']*x
#歸一化,后數組遞減排列
for zimu in xiangsi:
    xiangsi[zimu]=int(x*xiangsi[zimu]+b)   # 將字母表示為對應的黑度值。

print(xiangsi)

# # 直接讀取單通道灰度圖
gray_img = cv.imread('4.jpg', cv.IMREAD_GRAYSCALE)
gray_img = cv.resize(gray_img,(int(gray_img.shape[1]),int(gray_img.shape[0]/1.7)),interpolation=cv.INTER_CUBIC)
# cv.imshow('iker', gray_img)
# cv.waitKey(0)
print(gray_img.shape)   # 先是高度, 再是寬度
file = open('1.txt',mode='w')



for row in range(gray_img.shape[0]):
    for col in range(gray_img.shape[1]):
        pzimu=" "
        cansee=False
        for zimu in xiangsi:
            if (gray_img[row][col] > xiangsi[zimu]):
                file.write(pzimu)
                cansee=True
                break
            else:
                pzimu=zimu
        if(not cansee):file.write(pzimu)
    file.write('\n')
file.close()

//////*****如果包導不進去,就導opencv-python*******///////

原圖:

 

 

效果圖:

 

注意兩點:

1圖片像素太大,可以用畫圖,修改像素大小

2.通過調整文本格式里的格式(小六,西歐文)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM