teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

分かったことを追記。

2021/04/21 13:48

投稿

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

4

やってみたこと追記。

2021/04/21 13:48

投稿

退会済みユーザー
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
- 初期化とか確か必要ありませんでしたよね?pythonのforは
54
+ 関数内でappendしてるから初期化必要るのか?と思って最後の2つの変数を関数の初めにclear初期化てみましが、変わりないです

3

編集しました。

2021/04/21 13:35

投稿

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

2

変更、追記しました。

2021/04/21 13:18

投稿

退会済みユーザー
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

追記しました。

2021/04/21 13:10

投稿

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