質問編集履歴
5
分かったことを追記。
title
CHANGED
File without changes
|
body
CHANGED
@@ -49,6 +49,15 @@
|
|
49
49
|
となり、どんどん増えていってます、なぜでしょう、行と列は一緒で、
|
50
50
|
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|
51
51
|
ちなみにgとbを逆にすると、今度はbのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
|
52
|
-
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
53
52
|
|
53
|
+
ちなみに上2つのリストについてなんですが、
|
54
|
+
一番上のリストは問題なく実行されていて、問題の2番目ですが、これは、
|
55
|
+
|
56
|
+
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4,
|
57
|
+
6, 5, 1, 1, 1, 1, 5, 0, 4, 4,
|
58
|
+
4, 3, 2, 2, 2, 0, 3, 3, 3, 3,
|
59
|
+
7, 3, 3, 3, 3, 1, 2, 2, 2, 2]
|
60
|
+
|
54
|
-
|
61
|
+
まぁこんな風に分割できて、この一番上と上から3番目は、それぞれbの行と列に対する正しい実行結果なのですが、
|
62
|
+
上から二番目と四番目は、先程の、gのそれぞれ行と列の実行結果なんですよね、
|
63
|
+
なんでこんなごちゃまぜになっちゃったんでしょうか。
|
4
やってみたこと追記。
title
CHANGED
File without changes
|
body
CHANGED
@@ -50,4 +50,5 @@
|
|
50
50
|
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|
51
51
|
ちなみにgとbを逆にすると、今度はbのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
|
52
52
|
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
53
|
+
|
53
|
-
初期化
|
54
|
+
関数内でappendしてるから初期化の必要があるのか?と思って最後の2つの変数を関数の初めにclearで初期化してみましたが、変わりないです。
|
3
編集しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
行列
|
1
|
+
(numpy行列範囲内数値個数抜き出し)関数を、実行する度リストがどんどん巨大化していく・・・。
|
body
CHANGED
@@ -48,5 +48,6 @@
|
|
48
48
|
|
49
49
|
となり、どんどん増えていってます、なぜでしょう、行と列は一緒で、
|
50
50
|
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|
51
|
-
ちなみにgと
|
51
|
+
ちなみにgとbを逆にすると、今度はbのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
|
52
|
-
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
52
|
+
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
53
|
+
初期化とか確か必要ありませんでしたよね?pythonのforは。
|
2
変更、追記しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
行列の範囲内数値個数抜き出し関数が上手く実行されない。
|
1
|
+
行列の範囲内数値個数抜き出し関数が上手く実行されない(実行する度リストがどんどん拡大されていく・・・。
|
body
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
指定範囲内の数値の個数を抜き出したいのに抜き取れない。
|
2
|
+
*すいませんreturnのインデント間違っていたので直しました。
|
2
3
|
|
3
4
|
```python
|
4
5
|
# PILで開いたうえでデータをNumpy形式にする
|
@@ -14,81 +15,17 @@
|
|
14
15
|
h, w, ch = x.shape
|
15
16
|
|
16
17
|
# RGBのGだけ抜き取りたい
|
17
|
-
return x[:,:,y]
|
18
|
-
|
19
|
-
v_max, v_min = 300, 200
|
20
|
-
|
21
|
-
#g
|
22
|
-
img_g = extract(reiimg, 1)
|
23
|
-
|
24
|
-
imgrows, lenrows, imgcolumns, lencolumns = [], [], [], []
|
25
|
-
|
26
|
-
print(img_g)
|
27
|
-
|
28
|
-
def diff(x):
|
29
|
-
for (img, imgt) in zip(x, x.T):
|
30
|
-
rows = img[(v_min<img)&(v_max>img)]
|
31
|
-
columns = imgt[(v_min<imgt)&(v_max>imgt)]
|
32
|
-
imgrows.append(rows)
|
33
|
-
lenrows.append(len(rows))
|
34
|
-
imgcolumns.append(columns)
|
35
|
-
lencolumns.append(len(columns))
|
36
|
-
return lenrows + lencolumns
|
37
|
-
|
38
|
-
print(diff(img_g))
|
39
|
-
```
|
40
|
-
|
41
|
-
出力結果
|
42
|
-
Mounted at /content/drive
|
43
|
-
[[253 254 254 254 254 189 0 0 0 0]
|
44
|
-
[208 208 194 189 197 158 31 32 31 33]
|
45
|
-
[161 126 71 59 66 84 144 146 146 149]
|
46
|
-
[181 112 23 15 23 21 5 2 3 2]
|
47
|
-
[169 99 5 3 14 20 20 20 19 18]
|
48
|
-
[219 176 122 121 129 94 101 95 92 92]
|
49
|
-
[255 255 250 249 245 159 163 156 149 152]
|
50
|
-
[ 68 73 78 62 91 146 229 220 218 219]
|
51
|
-
[ 16 9 9 7 22 102 246 252 255 253]
|
52
|
-
[ 25 20 14 19 18 85 236 249 253 250]]
|
53
|
-
[5, 4]
|
54
|
-
|
55
|
-
どういうことかというと、上の行列から一行ずつ、そして一列ずつ、200~300の間の数値の個数を抜き取りたいのですが、
|
56
|
-
まず5というのは、1行目の数で、2行目以降が反映されておらず、
|
57
|
-
4というのは一列目の数で、2列目以降が反映されていないのです、なぜでしょう。
|
58
|
-
|
59
|
-
|
60
|
-
まず1つ目、各defのindent位置を直しました。
|
61
|
-
```python
|
62
|
-
def extract(x, y):
|
63
|
-
# カラー画像の時Gだけ抜き取りたい
|
64
|
-
if len(x.shape) == 3:
|
65
|
-
h, w, ch = x.shape
|
66
|
-
|
67
|
-
# RGBのGだけ抜き取りたい
|
68
18
|
return x[:,:,y]
|
69
19
|
|
70
20
|
v_max, v_min = 300, 200
|
71
21
|
|
72
22
|
#g
|
73
23
|
img_g = extract(reiimg, 1)
|
74
|
-
#b
|
75
|
-
img_b = extract(reiimg, 2)
|
76
|
-
#r
|
77
|
-
img_r = extract(reiimg, 0)
|
78
24
|
|
79
|
-
#g
|
80
|
-
eximg_g = extract(eximg, 1)
|
81
|
-
#b
|
82
|
-
eximg_b = extract(eximg, 2)
|
83
|
-
#r
|
84
|
-
eximg_r = extract(eximg, 0)
|
85
|
-
|
86
25
|
imgrows, lenrows, imgcolumns, lencolumns = [], [], [], []
|
87
26
|
|
88
27
|
print(img_g)
|
89
|
-
```
|
90
28
|
|
91
|
-
```python
|
92
29
|
def diff(x):
|
93
30
|
for (img, imgt) in zip(x, x.T):
|
94
31
|
rows = img[(v_min<img)&(v_max>img)]
|
@@ -100,7 +37,8 @@
|
|
100
37
|
return lenrows + lencolumns
|
101
38
|
```
|
102
39
|
|
40
|
+
上の行列から一行ずつ、そして一列ずつ、200~300の間の数値の個数を抜き取りたいのですが、
|
103
|
-
|
41
|
+
この出力結果が
|
104
42
|
|
105
43
|
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3]
|
106
44
|
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 6, 5, 1, 1, 1, 1, 5, 0, 4, 4, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2]
|
@@ -109,4 +47,6 @@
|
|
109
47
|
・・・
|
110
48
|
|
111
49
|
となり、どんどん増えていってます、なぜでしょう、行と列は一緒で、
|
112
|
-
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|
50
|
+
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|
51
|
+
ちなみにgとrを逆にすると、今度はrのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
|
52
|
+
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
1
追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -54,4 +54,59 @@
|
|
54
54
|
|
55
55
|
どういうことかというと、上の行列から一行ずつ、そして一列ずつ、200~300の間の数値の個数を抜き取りたいのですが、
|
56
56
|
まず5というのは、1行目の数で、2行目以降が反映されておらず、
|
57
|
-
4というのは一列目の数で、2列目以降が反映されていないのです、なぜでしょう。
|
57
|
+
4というのは一列目の数で、2列目以降が反映されていないのです、なぜでしょう。
|
58
|
+
|
59
|
+
|
60
|
+
まず1つ目、各defのindent位置を直しました。
|
61
|
+
```python
|
62
|
+
def extract(x, y):
|
63
|
+
# カラー画像の時Gだけ抜き取りたい
|
64
|
+
if len(x.shape) == 3:
|
65
|
+
h, w, ch = x.shape
|
66
|
+
|
67
|
+
# RGBのGだけ抜き取りたい
|
68
|
+
return x[:,:,y]
|
69
|
+
|
70
|
+
v_max, v_min = 300, 200
|
71
|
+
|
72
|
+
#g
|
73
|
+
img_g = extract(reiimg, 1)
|
74
|
+
#b
|
75
|
+
img_b = extract(reiimg, 2)
|
76
|
+
#r
|
77
|
+
img_r = extract(reiimg, 0)
|
78
|
+
|
79
|
+
#g
|
80
|
+
eximg_g = extract(eximg, 1)
|
81
|
+
#b
|
82
|
+
eximg_b = extract(eximg, 2)
|
83
|
+
#r
|
84
|
+
eximg_r = extract(eximg, 0)
|
85
|
+
|
86
|
+
imgrows, lenrows, imgcolumns, lencolumns = [], [], [], []
|
87
|
+
|
88
|
+
print(img_g)
|
89
|
+
```
|
90
|
+
|
91
|
+
```python
|
92
|
+
def diff(x):
|
93
|
+
for (img, imgt) in zip(x, x.T):
|
94
|
+
rows = img[(v_min<img)&(v_max>img)]
|
95
|
+
columns = imgt[(v_min<imgt)&(v_max>imgt)]
|
96
|
+
imgrows.append(rows)
|
97
|
+
lenrows.append(len(rows))
|
98
|
+
imgcolumns.append(columns)
|
99
|
+
lencolumns.append(len(columns))
|
100
|
+
return lenrows + lencolumns
|
101
|
+
```
|
102
|
+
|
103
|
+
が、まだよく分からない部分があります、この出力結果が
|
104
|
+
|
105
|
+
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3]
|
106
|
+
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 6, 5, 1, 1, 1, 1, 5, 0, 4, 4, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2]
|
107
|
+
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 6, 5, 1, 1, 1, 1, 5, 0, 4, 4, 5, 0, 4, 8, 8, 2, 5, 3, 10, 10, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 5, 5, 8, 7, 6, 4, 5, 5, 5, 5]
|
108
|
+
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 6, 5, 1, 1, 1, 1, 5, 0, 4, 4, 5, 0, 4, 8, 8, 2, 5, 3, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 5, 5, 8, 7, 6, 4, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
109
|
+
・・・
|
110
|
+
|
111
|
+
となり、どんどん増えていってます、なぜでしょう、行と列は一緒で、
|
112
|
+
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|