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

質問編集履歴

4

実行できるように変更

2022/08/25 03:34

投稿

lix__
lix__

スコア5

title CHANGED
File without changes
body CHANGED
@@ -7,37 +7,52 @@
7
7
  import cv2
8
8
  import numpy as np
9
9
  import time
10
- i = 0
10
+
11
- # カウント変数
11
+ i = 0 # カウント変数
12
- th = 30
13
- # 差分画像の閾値
12
+ th = 30 # 差分画像の閾値
13
+
14
14
  # 動画ファイルのキャプチャ
15
15
  cap = cv2.VideoCapture("zverev1.mp4")
16
+
16
- # 最初のフレームを背景画像に設定 ret, bg = cap.read()
17
+ # 最初のフレームを背景画像に設定
17
- # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
18
- while(cap.isOpened()):
19
- # フレームの取得
20
- ret, frame = cap.read()
18
+ ret, bg = cap.read()
19
+
21
20
  # グレースケール変換
22
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
23
- # 差分の絶対値を計算
24
- mask = cv2.absdiff(gray, bg)
25
- # 差分画像を二値化してマスク画像を算出
26
- mask[mask < th] = 0
27
- mask[mask >= th] = 255
28
- # フレームとマスク画像を表示
29
- cv2.imshow("Mask", mask)
30
- cv2.imshow("Flame", gray)
31
- cv2.imshow("Background", bg)
32
- # 待機(0.03sec)
33
- time.sleep(0.03)
34
- i += 1 # カウントを1増やす
35
- # 背景画像の更新(一定間隔)
36
- if(i > 30): ret, bg = cap.read()
37
21
  bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
22
+
23
+ while(cap.isOpened()):
24
+ # フレームの取得
25
+ ret, frame = cap.read()
26
+
27
+ # グレースケール変換
28
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
29
+
30
+ # 差分の絶対値を計算
31
+ mask = cv2.absdiff(gray, bg)
32
+
33
+ # 差分画像を二値化してマスク画像を算出
34
+ mask[mask < th] = 0
35
+ mask[mask >= th] = 255
36
+
37
+ # フレームとマスク画像を表示
38
+ cv2.imshow("Mask", mask)
39
+ cv2.imshow("Flame", gray)
40
+ cv2.imshow("Background", bg)
41
+
42
+ # 待機(0.03sec)
43
+ time.sleep(0.03)
44
+ i += 1 # カウントを1増やす
45
+
46
+ # 背景画像の更新(一定間隔)
38
- i = 0
47
+ if(i > 30):
48
+ ret, bg = cap.read()
49
+ bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
39
- # カウント変数の初期化
50
+ i = 0 # カウント変数の初期化
51
+
52
+ # qキーが押されたら途中終了
40
- if cv2.waitKey(1) & 0xFF == ord('q'):
53
+ if cv2.waitKey(1) & 0xFF == ord('q'):
54
+ break
55
+
41
- break cap.release()
56
+ cap.release()
42
57
  cv2.destroyAllWindows()
43
58
  ```

3

プログラムの表記方法の変更

2022/08/25 03:22

投稿

lix__
lix__

スコア5

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  実行環境
4
4
  jupyter python
5
5
  フレーム差分による物体検出を行うコードは以下になります
6
- python
6
+ ```python
7
7
  import cv2
8
8
  import numpy as np
9
9
  import time
@@ -40,4 +40,4 @@
40
40
  if cv2.waitKey(1) & 0xFF == ord('q'):
41
41
  break cap.release()
42
42
  cv2.destroyAllWindows()
43
-
43
+ ```

2

プログラムが読みづらいため更新

2022/08/25 03:21

投稿

lix__
lix__

スコア5

title CHANGED
File without changes
body CHANGED
@@ -3,40 +3,41 @@
3
3
  実行環境
4
4
  jupyter python
5
5
  フレーム差分による物体検出を行うコードは以下になります
6
+ python
6
7
  import cv2
7
- import numpy as np
8
+ import numpy as np
8
- import time
9
+ import time
9
- i = 0
10
+ i = 0
10
- # カウント変数
11
+ # カウント変数
11
- th = 30
12
+ th = 30
12
- # 差分画像の閾値
13
+ # 差分画像の閾値
13
- # 動画ファイルのキャプチャ
14
+ # 動画ファイルのキャプチャ
14
- cap = cv2.VideoCapture("zverev1.mp4")
15
+ cap = cv2.VideoCapture("zverev1.mp4")
15
- # 最初のフレームを背景画像に設定 ret, bg = cap.read()
16
+ # 最初のフレームを背景画像に設定 ret, bg = cap.read()
16
- # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
17
+ # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
17
- while(cap.isOpened()):
18
+ while(cap.isOpened()):
18
- # フレームの取得
19
+ # フレームの取得
19
- ret, frame = cap.read()
20
+ ret, frame = cap.read()
20
- # グレースケール変換
21
+ # グレースケール変換
21
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
22
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
22
- # 差分の絶対値を計算
23
+ # 差分の絶対値を計算
23
- mask = cv2.absdiff(gray, bg)
24
+ mask = cv2.absdiff(gray, bg)
24
- # 差分画像を二値化してマスク画像を算出
25
+ # 差分画像を二値化してマスク画像を算出
25
- mask[mask < th] = 0
26
+ mask[mask < th] = 0
26
- mask[mask >= th] = 255
27
+ mask[mask >= th] = 255
27
- # フレームとマスク画像を表示
28
+ # フレームとマスク画像を表示
28
- cv2.imshow("Mask", mask)
29
+ cv2.imshow("Mask", mask)
29
- cv2.imshow("Flame", gray)
30
+ cv2.imshow("Flame", gray)
30
- cv2.imshow("Background", bg)
31
+ cv2.imshow("Background", bg)
31
- # 待機(0.03sec)
32
+ # 待機(0.03sec)
32
- time.sleep(0.03)
33
+ time.sleep(0.03)
33
- i += 1 # カウントを1増やす
34
+ i += 1 # カウントを1増やす
34
- # 背景画像の更新(一定間隔)
35
+ # 背景画像の更新(一定間隔)
35
- if(i > 30): ret, bg = cap.read()
36
+ if(i > 30): ret, bg = cap.read()
36
- bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
37
+ bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
37
- i = 0
38
+ i = 0
38
- # カウント変数の初期化
39
+ # カウント変数の初期化
39
- if cv2.waitKey(1) & 0xFF == ord('q'):
40
+ if cv2.waitKey(1) & 0xFF == ord('q'):
40
- break cap.release()
41
+ break cap.release()
41
- cv2.destroyAllWindows()
42
+ cv2.destroyAllWindows()
42
43
 

1

出来ているとこまでのコードの追加

2022/08/25 02:12

投稿

lix__
lix__

スコア5

title CHANGED
File without changes
body CHANGED
@@ -2,4 +2,41 @@
2
2
  当方python初心者なためお力添いをおねがいします。
3
3
  実行環境
4
4
  jupyter python
5
+ フレーム差分による物体検出を行うコードは以下になります
6
+ import cv2
7
+ import numpy as np
8
+ import time
9
+ i = 0
10
+ # カウント変数
11
+ th = 30
12
+ # 差分画像の閾値
13
+ # 動画ファイルのキャプチャ
14
+ cap = cv2.VideoCapture("zverev1.mp4")
15
+ # 最初のフレームを背景画像に設定 ret, bg = cap.read()
16
+ # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
17
+ while(cap.isOpened()):
18
+ # フレームの取得
19
+ ret, frame = cap.read()
20
+ # グレースケール変換
21
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
22
+ # 差分の絶対値を計算
23
+ mask = cv2.absdiff(gray, bg)
24
+ # 差分画像を二値化してマスク画像を算出
25
+ mask[mask < th] = 0
26
+ mask[mask >= th] = 255
27
+ # フレームとマスク画像を表示
28
+ cv2.imshow("Mask", mask)
29
+ cv2.imshow("Flame", gray)
30
+ cv2.imshow("Background", bg)
31
+ # 待機(0.03sec)
32
+ time.sleep(0.03)
33
+ i += 1 # カウントを1増やす
34
+ # 背景画像の更新(一定間隔)
35
+ if(i > 30): ret, bg = cap.read()
36
+ bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
37
+ i = 0
38
+ # カウント変数の初期化
39
+ if cv2.waitKey(1) & 0xFF == ord('q'):
40
+ break cap.release()
41
+ cv2.destroyAllWindows()
5
42