質問編集履歴
5
分かったことを追記。
test
CHANGED
File without changes
|
test
CHANGED
@@ -100,8 +100,26 @@
|
|
100
100
|
|
101
101
|
ちなみにgとbを逆にすると、今度はbのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
|
102
102
|
|
103
|
+
|
104
|
+
|
105
|
+
ちなみに上2つのリストについてなんですが、
|
106
|
+
|
103
|
-
|
107
|
+
一番上のリストは問題なく実行されていて、問題の2番目ですが、これは、
|
104
108
|
|
105
109
|
|
106
110
|
|
111
|
+
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4,
|
112
|
+
|
113
|
+
6, 5, 1, 1, 1, 1, 5, 0, 4, 4,
|
114
|
+
|
115
|
+
4, 3, 2, 2, 2, 0, 3, 3, 3, 3,
|
116
|
+
|
117
|
+
7, 3, 3, 3, 3, 1, 2, 2, 2, 2]
|
118
|
+
|
119
|
+
|
120
|
+
|
107
|
-
|
121
|
+
まぁこんな風に分割できて、この一番上と上から3番目は、それぞれbの行と列に対する正しい実行結果なのですが、
|
122
|
+
|
123
|
+
上から二番目と四番目は、先程の、gのそれぞれ行と列の実行結果なんですよね、
|
124
|
+
|
125
|
+
なんでこんなごちゃまぜになっちゃったんでしょうか。
|
4
やってみたこと追記。
test
CHANGED
File without changes
|
test
CHANGED
@@ -102,4 +102,6 @@
|
|
102
102
|
|
103
103
|
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
104
104
|
|
105
|
+
|
106
|
+
|
105
|
-
初期化
|
107
|
+
関数内でappendしてるから初期化の必要があるのか?と思って最後の2つの変数を関数の初めにclearで初期化してみましたが、変わりないです。
|
3
編集しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
行列
|
1
|
+
(numpy行列範囲内数値個数抜き出し)関数を、実行する度リストがどんどん巨大化していく・・・。
|
test
CHANGED
@@ -98,6 +98,8 @@
|
|
98
98
|
|
99
99
|
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|
100
100
|
|
101
|
-
ちなみにgと
|
101
|
+
ちなみにgとbを逆にすると、今度はbのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
|
102
102
|
|
103
103
|
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
104
|
+
|
105
|
+
初期化とか確か必要ありませんでしたよね?pythonのforは。
|
2
変更、追記しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
行列の範囲内数値個数抜き出し関数が上手く実行されない。
|
1
|
+
行列の範囲内数値個数抜き出し関数が上手く実行されない(実行する度リストがどんどん拡大されていく・・・。
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
指定範囲内の数値の個数を抜き出したいのに抜き取れない。
|
2
|
+
|
3
|
+
*すいませんreturnのインデント間違っていたので直しました。
|
2
4
|
|
3
5
|
|
4
6
|
|
@@ -30,7 +32,7 @@
|
|
30
32
|
|
31
33
|
# RGBのGだけ抜き取りたい
|
32
34
|
|
33
|
-
|
35
|
+
return x[:,:,y]
|
34
36
|
|
35
37
|
|
36
38
|
|
@@ -68,141 +70,15 @@
|
|
68
70
|
|
69
71
|
lencolumns.append(len(columns))
|
70
72
|
|
71
|
-
return lenrows + lencolumns
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
print(diff(img_g))
|
76
|
-
|
77
|
-
```
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
出力結果
|
82
|
-
|
83
|
-
Mounted at /content/drive
|
84
|
-
|
85
|
-
[[253 254 254 254 254 189 0 0 0 0]
|
86
|
-
|
87
|
-
[208 208 194 189 197 158 31 32 31 33]
|
88
|
-
|
89
|
-
[161 126 71 59 66 84 144 146 146 149]
|
90
|
-
|
91
|
-
[181 112 23 15 23 21 5 2 3 2]
|
92
|
-
|
93
|
-
[169 99 5 3 14 20 20 20 19 18]
|
94
|
-
|
95
|
-
[219 176 122 121 129 94 101 95 92 92]
|
96
|
-
|
97
|
-
[255 255 250 249 245 159 163 156 149 152]
|
98
|
-
|
99
|
-
[ 68 73 78 62 91 146 229 220 218 219]
|
100
|
-
|
101
|
-
[ 16 9 9 7 22 102 246 252 255 253]
|
102
|
-
|
103
|
-
[ 25 20 14 19 18 85 236 249 253 250]]
|
104
|
-
|
105
|
-
[5, 4]
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
どういうことかというと、上の行列から一行ずつ、そして一列ずつ、200~300の間の数値の個数を抜き取りたいのですが、
|
110
|
-
|
111
|
-
まず5というのは、1行目の数で、2行目以降が反映されておらず、
|
112
|
-
|
113
|
-
4というのは一列目の数で、2列目以降が反映されていないのです、なぜでしょう。
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
まず1つ目、各defのindent位置を直しました。
|
120
|
-
|
121
|
-
```python
|
122
|
-
|
123
|
-
def extract(x, y):
|
124
|
-
|
125
|
-
# カラー画像の時Gだけ抜き取りたい
|
126
|
-
|
127
|
-
if len(x.shape) == 3:
|
128
|
-
|
129
|
-
h, w, ch = x.shape
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
# RGBのGだけ抜き取りたい
|
134
|
-
|
135
|
-
return x[:,:,y]
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
v_max, v_min = 300, 200
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
#g
|
144
|
-
|
145
|
-
img_g = extract(reiimg, 1)
|
146
|
-
|
147
|
-
#b
|
148
|
-
|
149
|
-
img_b = extract(reiimg, 2)
|
150
|
-
|
151
|
-
#r
|
152
|
-
|
153
|
-
img_r = extract(reiimg, 0)
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
#g
|
158
|
-
|
159
|
-
eximg_g = extract(eximg, 1)
|
160
|
-
|
161
|
-
#b
|
162
|
-
|
163
|
-
eximg_b = extract(eximg, 2)
|
164
|
-
|
165
|
-
#r
|
166
|
-
|
167
|
-
eximg_r = extract(eximg, 0)
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
imgrows, lenrows, imgcolumns, lencolumns = [], [], [], []
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
print(img_g)
|
176
|
-
|
177
|
-
```
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
```python
|
182
|
-
|
183
|
-
def diff(x):
|
184
|
-
|
185
|
-
for (img, imgt) in zip(x, x.T):
|
186
|
-
|
187
|
-
rows = img[(v_min<img)&(v_max>img)]
|
188
|
-
|
189
|
-
columns = imgt[(v_min<imgt)&(v_max>imgt)]
|
190
|
-
|
191
|
-
imgrows.append(rows)
|
192
|
-
|
193
|
-
lenrows.append(len(rows))
|
194
|
-
|
195
|
-
imgcolumns.append(columns)
|
196
|
-
|
197
|
-
lencolumns.append(len(columns))
|
198
|
-
|
199
73
|
return lenrows + lencolumns
|
200
74
|
|
201
75
|
```
|
202
76
|
|
203
77
|
|
204
78
|
|
79
|
+
上の行列から一行ずつ、そして一列ずつ、200~300の間の数値の個数を抜き取りたいのですが、
|
80
|
+
|
205
|
-
|
81
|
+
この出力結果が
|
206
82
|
|
207
83
|
|
208
84
|
|
@@ -221,3 +97,7 @@
|
|
221
97
|
となり、どんどん増えていってます、なぜでしょう、行と列は一緒で、
|
222
98
|
|
223
99
|
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|
100
|
+
|
101
|
+
ちなみにgとrを逆にすると、今度はrのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
|
102
|
+
|
103
|
+
for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
|
1
追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -111,3 +111,113 @@
|
|
111
111
|
まず5というのは、1行目の数で、2行目以降が反映されておらず、
|
112
112
|
|
113
113
|
4というのは一列目の数で、2列目以降が反映されていないのです、なぜでしょう。
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
まず1つ目、各defのindent位置を直しました。
|
120
|
+
|
121
|
+
```python
|
122
|
+
|
123
|
+
def extract(x, y):
|
124
|
+
|
125
|
+
# カラー画像の時Gだけ抜き取りたい
|
126
|
+
|
127
|
+
if len(x.shape) == 3:
|
128
|
+
|
129
|
+
h, w, ch = x.shape
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
# RGBのGだけ抜き取りたい
|
134
|
+
|
135
|
+
return x[:,:,y]
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
v_max, v_min = 300, 200
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
#g
|
144
|
+
|
145
|
+
img_g = extract(reiimg, 1)
|
146
|
+
|
147
|
+
#b
|
148
|
+
|
149
|
+
img_b = extract(reiimg, 2)
|
150
|
+
|
151
|
+
#r
|
152
|
+
|
153
|
+
img_r = extract(reiimg, 0)
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
#g
|
158
|
+
|
159
|
+
eximg_g = extract(eximg, 1)
|
160
|
+
|
161
|
+
#b
|
162
|
+
|
163
|
+
eximg_b = extract(eximg, 2)
|
164
|
+
|
165
|
+
#r
|
166
|
+
|
167
|
+
eximg_r = extract(eximg, 0)
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
imgrows, lenrows, imgcolumns, lencolumns = [], [], [], []
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
print(img_g)
|
176
|
+
|
177
|
+
```
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
```python
|
182
|
+
|
183
|
+
def diff(x):
|
184
|
+
|
185
|
+
for (img, imgt) in zip(x, x.T):
|
186
|
+
|
187
|
+
rows = img[(v_min<img)&(v_max>img)]
|
188
|
+
|
189
|
+
columns = imgt[(v_min<imgt)&(v_max>imgt)]
|
190
|
+
|
191
|
+
imgrows.append(rows)
|
192
|
+
|
193
|
+
lenrows.append(len(rows))
|
194
|
+
|
195
|
+
imgcolumns.append(columns)
|
196
|
+
|
197
|
+
lencolumns.append(len(columns))
|
198
|
+
|
199
|
+
return lenrows + lencolumns
|
200
|
+
|
201
|
+
```
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
が、まだよく分からない部分があります、この出力結果が
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3]
|
210
|
+
|
211
|
+
[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]
|
212
|
+
|
213
|
+
[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]
|
214
|
+
|
215
|
+
[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]
|
216
|
+
|
217
|
+
・・・
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
となり、どんどん増えていってます、なぜでしょう、行と列は一緒で、
|
222
|
+
|
223
|
+
RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
|