Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Python untuk menukar gambar menjadi lukisan watak

Cara menggunakan Python untuk menukar gambar menjadi lukisan watak

王林
王林ke hadapan
2023-05-17 14:34:061645semak imbas

Pertama sekali, terdapat masalah, iaitu untuk mensimulasikan skala kelabu Berikut adalah formula:

1
Gray = 0.2126 × R + 0.7152 × G + 0.0722 × B

Ini mudah dikendalikan. Sudah tentu, dalam mod RGB, walaupun julat warna 256x256x256 ditukar kepada julat skala kelabu 256, aksara masih tidak berada dalam surat-menyurat satu dengan satu. Kita boleh menyelesaikan masalah ini dengan menggunakan satu aksara untuk sepadan dengan berbilang skala kelabu.

Ingat untuk memasang perpustakaan PIL terlebih dahulu, termasuk:

Jika Python 2, jalankan pip install PIL.

Jika Python 3, jalankan pip install pillow.

Mari kita terus ke kod:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from PIL import Image
#设置显示的字符集
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`&#39;. ")    
WIDTH = 130
HEIGHT = 50
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return &#39; &#39;
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    unit = (255.0 + 1)/length
    return ascii_char[int(gray/unit)]
if __name__ == &#39;__main__&#39;:
    img = "E:/WindowsDocuments/G7/Desktop/1.png"
    im = Image.open(img)
    im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
    txt = ""
    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j,i)))
        txt += &#39;\n&#39;
    print(txt)

Jika anda ingin mengeluarkan ke fail, anda boleh menambah nama fail yang ingin anda simpan dalam bahagian definisi OUTPUT = 'output.txt' dan kemudian pada akhirnya Tulis dalam:

1
2
with open(OUTPUT, &#39;w&#39;) as f:
    f.write(txt)

Akhirnya, kita dapat ini:

Cara menggunakan Python untuk menukar gambar menjadi lukisan watak

Atas ialah kandungan terperinci Cara menggunakan Python untuk menukar gambar menjadi lukisan watak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam