回答編集履歴

1

追補

2020/01/03 08:40

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,10 @@
1
+ **@ np.zeros**
2
+
1
3
  画像データ`h`と同じshapeのuint8(0-255)の画像を作り、0で初期化する、という関数です。
2
4
 
3
5
 
4
6
 
5
- (3,3)のshapeであればこういうイメージです。
7
+ `(3,3)`のshapeであればこういうイメージです。
6
8
 
7
9
 
8
10
 
@@ -18,4 +20,32 @@
18
20
 
19
21
 
20
22
 
21
- np.zeorsは後続の処理でフラグ管理がしやすいために使い勝手が良い関数です。
23
+ np.zeorsは後続の処理でフラグ管理がしやすいために使い勝手が良いです。
24
+
25
+ ですので、なぜこんなことを理解しようとする上で重要なのは、質問の`np.zeros()`よりもその後の`img[((h<50) | (h>200)) & (s>100)] = 255`だと思います。
26
+
27
+
28
+
29
+ **@ 後続処理**
30
+
31
+ `img[((h<50) | (h>200)) & (s>100)] = 255`は、imgのデータのうち「hが50未満」または「hが200より大きく、しかもsが100以上」のところを255にする、というものです。
32
+
33
+ imgはゼロで初期化されていますので、**興味のある部分のみが255、他はゼロ**というおいしい情報がimgに収まります。
34
+
35
+
36
+
37
+ もし、先の3x3の中心部分がその対象部位であれば、データが以下のようになります。
38
+
39
+ ||1|2|3|
40
+
41
+ |:--|:--:|:--:|--:|
42
+
43
+ |1|0|0|0||
44
+
45
+ |2|0|**255**|0||
46
+
47
+ |3|0|0|0||
48
+
49
+
50
+
51
+ いかがでしょうか?