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

回答編集履歴

2

d

2020/06/16 13:37

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -9,7 +9,7 @@
9
9
  ```
10
10
 
11
11
  動画ファイルを逐次読み込んでいき、これ以上取得するフレームがない場合、`cap.read()` は (False, None) を返します。
12
- このループが終了した段階で、None が img に代入されており、それに対して顔検出を行っているのでその返り値 `facerect` も空になります。
12
+ このループが終了した段階で、None が img に代入されており、それに対して顔検出を行っているのでその返り値 `facerect` も空になります。つまり、`img` には最後のフレームの画像ではなく、None が入っています。(print して確認してみてください)
13
13
 
14
14
  コードの変更を最小限で修正するには、以下のように `frame` という仮変数に入れておき、`ret == True` の場合に `img = frame` に代入すれば、ループ終了時点で `img` には最後のフレームの画像が入るようになると思います。
15
15
 

1

d

2020/06/16 13:37

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -8,8 +8,8 @@
8
8
  break
9
9
  ```
10
10
 
11
- このループが終了した段階の変数 `img` に対して検出していますが、動画ファイルを逐次読み込んでいき、これ以上取得するフレームがない場合、`cap.read()` は (False, None) を返します。
11
+ 動画ファイルを逐次読み込んでいき、これ以上取得するフレームがない場合、`cap.read()` は (False, None) を返します。
12
- この None が img に代入されて、それに対して顔検出を行っているのでその返り値 `facerect` も空になります。
12
+ このループが終了した段階で、None が img に代入されており、それに対して顔検出を行っているのでその返り値 `facerect` も空になります。
13
13
 
14
14
  コードの変更を最小限で修正するには、以下のように `frame` という仮変数に入れておき、`ret == True` の場合に `img = frame` に代入すれば、ループ終了時点で `img` には最後のフレームの画像が入るようになると思います。
15
15