質問編集履歴

5

分かったことを追記。

2021/04/21 13:48

投稿

退会済みユーザー
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
- for文変数使いまわしとか原因なんでしょうか?zipよく分かりません・・・。
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
- 関数内appendしから初期化必要があるのか?思って最後の2つの変数を関数の初めclearで初期化てみましたが、変わりです
121
+ まぁこんな風に分割、この一番上と上から3番目は、それぞれb対する正い実行結果ですが、
122
+
123
+ 上から二番目と四番目は、先程の、gのそれぞれ行と列の実行結果なんですよね、
124
+
125
+ なんでこんなごちゃまぜになっちゃったんでしょうか。

4

やってみたこと追記。

2021/04/21 13:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -102,4 +102,6 @@
102
102
 
103
103
  for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
104
104
 
105
+
106
+
105
- 初期化とか確か必要ありませんでしたよね?pythonのforは
107
+ 関数内でappendしてるから初期化必要るのか?と思って最後の2つの変数を関数の初めにclear初期化てみましが、変わりないです

3

編集しました。

2021/04/21 13:35

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 行列範囲内数値個数抜き出し関数が上手く実行されない(実行する度リストがどんどんされていく・・・。
1
+ (numpy行列範囲内数値個数抜き出し関数を、実行する度リストがどんどん化していく・・・。
test CHANGED
@@ -98,6 +98,8 @@
98
98
 
99
99
  RGBの各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。
100
100
 
101
- ちなみにgとrを逆にすると、今度はrのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
101
+ ちなみにgとbを逆にすると、今度はbのリスト数が小さくなり、gのリストが大きくなります、大きさが交換されます。
102
102
 
103
103
  for文の変数の使いまわしとかが原因なんでしょうか?zipはよく分かりません・・・。
104
+
105
+ 初期化とか確か必要ありませんでしたよね?pythonのforは。

2

変更、追記しました。

2021/04/21 13:18

投稿

退会済みユーザー
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
- return x[:,:,y]
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

追記しました。

2021/04/21 13:10

投稿

退会済みユーザー
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の各リストの大きさは同じだから、出力されるリストの大きさも同じになるはずなんですが・・・。