以下のようにしてはどうでしょうか。
サンプルコード
サンプル画像
画像を読み込む。
python
1import matplotlib.pyplot as plt
2import numpy as np
3from PIL import Image
4
5# 画像を読み込む。
6img = np.array(Image.open('sample.png'))
7
8plt.imshow(img, cmap='gray')
9plt.show()
文字列に変換する。
python
1def convert(img):
2 '''画像 img を表す文字列の配列を返す。
3 '''
4 dst = np.empty(img.shape, dtype=str)
5
6 chars = ['■', '◉', '●', '@', '*', '+', '・', ' ']
7 for min_val, char in zip(range(0, 255, 32), chars):
8 max_val = min_val + 31
9 # print('{} ~ {}: `{}`'.format(min_val, max_val, char))
10 # min_val <= img <= max_val の画素を char に設定する。
11 dst[(min_val <= img) & (img <= max_val)] = char
12
13 return dst
変換した文字列の配列を表示する。
python
1dst = convert(img)
2
3for row in dst:
4 for char in row:
5 print(char, end='')
6 print()
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■@*+■+ @■■■■
■■■■■■■■■◉●*+ + ・●■■■■
■■■■■■■◉ ●●●◉◉■■■■■
■■■■■■■■・ ・+ ■■■■■■■■■■
■■■■■■■■●*@ ・■■◉*■■■■■■■■■■
■■■■■■■■■■■* ●■■■■■■■■■■■■■■
■■■■■■■■■■■* +■■■■■■■■■■■■■■
■■■■■■■■■■■■+ ●■■■■■■■■■■■■■
■■■■■■■■■■■■◉ +@■■■■■■■■■■■
■■■■■■■■■■■■■● @■■■■■■■■■■
■■■■■■■■■■■■■■◉+ *■■■■■■■■■
■■■■■■■■■■■■■■■■● +■■■■■■■■
■■■■■■■■■■■■■■■■■ ●■■■■■■■
■■■■■■■■■■■■■■◉*+ ・■■■■■■■■
■■■■■■■■■■■■◉* +■■■■■■■■
■■■■■■■■■■■@・ ・●■■■■■■■■■
■■■■■■■■■●・ ・●■■■■■■■■■■■
■■■■■■■+・ ・●■■■■■■■■■■■■■
■■■■◉+ *■■■■■■■■■■■■■■■
■■■■* ・**■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■
等幅フォントで表示すると、以下のようにキレイに表示されます。
質問コードに組み込む場合は以下
python
1def convert(img):
2 '''画像 img を表す文字列の配列を返す。
3 '''
4 dst = np.empty(img.shape, dtype=str)
5
6 chars = ['■', '◉', '●', '@', '*', '+', '・', ' ']
7 for min_val, char in zip(range(0, 255, 32), chars):
8 max_val = min_val + 31
9 # print('{} ~ {}: `{}`'.format(min_val, max_val, char))
10 # min_val <= img <= max_val の画素を char に設定する。
11 dst[(min_val <= img) & (img <= max_val)] = char
12
13 return dst
14
15dst = convert(ary)
16
17for row in dst:
18 for char in row:
19 print(char, end='')
20 print()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/07 22:18
2018/11/07 22:44