回答編集履歴
3
たいぽ
answer
CHANGED
@@ -69,11 +69,11 @@
|
|
69
69
|
1行目・・・左上ピクセルのR要素
|
70
70
|
2行目・・・左上ピクセルのG要素
|
71
71
|
3行目・・・左上ピクセルのB要素
|
72
|
-
4行目・・・左上ピクセルの
|
72
|
+
4行目・・・左上ピクセルのA要素
|
73
73
|
5行目・・・右上ピクセルのR要素
|
74
74
|
6行目・・・右上ピクセルのG要素
|
75
75
|
7行目・・・右上ピクセルのB要素
|
76
|
-
8行目・・・右上ピクセルの
|
76
|
+
8行目・・・右上ピクセルのA要素
|
77
77
|
:
|
78
78
|
:
|
79
79
|
|
2
誤字
answer
CHANGED
@@ -1,24 +1,19 @@
|
|
1
|
-
画像をそのように読み込むと3次元配列になります
|
1
|
+
画像をそのように読み込むと3次元配列になります(高さ、横幅、RGBAチャネル)。 3次元配列はそのままでは書き出せません。1次元配列か、2次元配列なら書き出せます。
|
2
2
|
|
3
|
-
|
3
|
+
グレースケール化した画像はRGBAチャネルがなく2次元配列で表されるので書き出すことができます。
|
4
|
-
|
5
4
|
```python
|
6
5
|
from PIL import Image
|
7
6
|
import numpy as np
|
8
7
|
|
9
|
-
img=Image.open("in.png").convert('L') # convert('L')はグレースケール
|
8
|
+
img=Image.open("in.png").convert('L') # convert('L')はグレースケールです。チャネルがないので縦、横の2次元です。
|
10
9
|
|
11
10
|
img_array=np.asarray(img)
|
12
11
|
|
13
12
|
np.savetxt('out', img_array)
|
14
13
|
```
|
15
14
|
|
16
|
-
|
15
|
+
また、3次元配列を1次元配列に変換して書き出すこともできます。
|
17
16
|
|
18
|
-
こんな感じ
|
19
|
-
|
20
|
-
|
21
|
-
|
22
17
|
```python
|
23
18
|
from PIL import Image
|
24
19
|
import numpy as np
|
@@ -26,7 +21,61 @@
|
|
26
21
|
img=Image.open("in.png")
|
27
22
|
|
28
23
|
img_array=np.asarray(img)
|
29
|
-
img_array = img_array.flatten() #
|
24
|
+
img_array = img_array.flatten() # 3次元1次元に変換しています。
|
30
25
|
|
31
26
|
np.savetxt('out', img_array)
|
32
|
-
```
|
27
|
+
```
|
28
|
+
|
29
|
+
【例】
|
30
|
+
以下のような 2x2 ピクセルで試してみます。
|
31
|
+

|
32
|
+
|
33
|
+
|
34
|
+
## 前者(グレースケール):
|
35
|
+
|
36
|
+
|
37
|
+
```
|
38
|
+
1.890000000000000000e+02 1.570000000000000000e+02
|
39
|
+
2.230000000000000000e+02 2.150000000000000000e+02
|
40
|
+
```
|
41
|
+
|
42
|
+
グレースケールなので各数値はピクセルの明るさを意味しています。
|
43
|
+
e+02は10の2乗を意味してるので、左上の数値は189(=1.89*100)と同じです。同様に右上は157、左下は223、右下は215です。
|
44
|
+
|
45
|
+
|
46
|
+
## 後者(flatten):
|
47
|
+
|
48
|
+
```
|
49
|
+
1.290000000000000000e+02
|
50
|
+
2.120000000000000000e+02
|
51
|
+
2.330000000000000000e+02
|
52
|
+
2.550000000000000000e+02
|
53
|
+
1.430000000000000000e+02
|
54
|
+
1.740000000000000000e+02
|
55
|
+
1.080000000000000000e+02
|
56
|
+
2.550000000000000000e+02
|
57
|
+
2.110000000000000000e+02
|
58
|
+
2.270000000000000000e+02
|
59
|
+
2.360000000000000000e+02
|
60
|
+
2.550000000000000000e+02
|
61
|
+
2.330000000000000000e+02
|
62
|
+
2.140000000000000000e+02
|
63
|
+
1.740000000000000000e+02
|
64
|
+
2.550000000000000000e+02
|
65
|
+
```
|
66
|
+
|
67
|
+
|
68
|
+
4行ごとに1つのピクセルを表してます。
|
69
|
+
1行目・・・左上ピクセルのR要素
|
70
|
+
2行目・・・左上ピクセルのG要素
|
71
|
+
3行目・・・左上ピクセルのB要素
|
72
|
+
4行目・・・左上ピクセルのR要素
|
73
|
+
5行目・・・右上ピクセルのR要素
|
74
|
+
6行目・・・右上ピクセルのG要素
|
75
|
+
7行目・・・右上ピクセルのB要素
|
76
|
+
8行目・・・右上ピクセルのR要素
|
77
|
+
:
|
78
|
+
:
|
79
|
+
|
80
|
+
|
81
|
+
です。
|
1
たいぽ
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from PIL import Image
|
7
7
|
import numpy as np
|
8
8
|
|
9
|
-
img=Image.open("in.png").convert('L') # convert('L')はグレースケール化を表しています
|
9
|
+
img=Image.open("in.png").convert('L') # convert('L')はグレースケール化(1次元)を表しています
|
10
10
|
|
11
11
|
img_array=np.asarray(img)
|
12
12
|
|
@@ -23,7 +23,7 @@
|
|
23
23
|
from PIL import Image
|
24
24
|
import numpy as np
|
25
25
|
|
26
|
-
img=Image.open("in.png")
|
26
|
+
img=Image.open("in.png")
|
27
27
|
|
28
28
|
img_array=np.asarray(img)
|
29
29
|
img_array = img_array.flatten() # 3d => 1d
|